LiveScript ! Выкинь JavaScript и CoffeeScript.

31.10.2013 - 2292 просмотрa ;)

LiveScript — конечно основан на некоем форке CoffeeScript, поэтому во многом он похож на любимый CoffeeScript.

Но он вкуснее. CoffeeScript даже не спасает Iced CoffeeScript просто потому что я не использую много асинхронностей.

Итак поехали по примерам (Первый пример на LiveScript второй на JavaScript ):

LiveScript :
if 2 + 2 == 4 do-something()
JavaScript :
if (2 + 2 === 4) { doSomething(); }

На сайтике http://livescript.net/#overview можно вживую проверять примеры, впрочем как и у CoffeeScript есть свои онлайн запускалки.

При вызове функций мы можем опускать скобки.

add 2, 3
add(2, 3);

Комментирование происходит как в CoffeeScript  и как в Perl:

# from here to the end of the line.
// from here to the end of the line.

Кстати расширения файлов у LiveScript : .ls

Функции LiveScript

Определить функцию в LiveScript крайне просто:

# Красавец LiveScript или CoffeeScript 
(x, y) -> x + y
//и уродливый JavaScript 
var times; (function(x, y){ return x + y; });

 

# пустая функция
->
// и уродец JavaScript 
(function(){});

 

еще функций:

# LiveScript 
times = (x, y) -> x * y
// JavaScript 
times = function(x, y){ return x * y; };

Да в LiveScript нет классического return, т.е. он необязателен, вернется то что было последним вычислением. Если вы хотите чтобы функция ничего не возвращала, то вызов функции немного изменится, совсем немного: no-ret = (x) !-> … Добавляется восклицательный знак.

Присваивание в LiveScript

Никаких объявлений переменных. Забудьте про объявления. Присвоение через знак =

И тут важное отличие от CoffeeScript. в LiveScript  если вы хотите изменить переменную за областью видимости (т.е. вне функции) вам нужно использовать :=

x = 10


do ->
  x = 5

x #=> 10

do ->
  x := 2

x #=> 2

В этом примере все прекрасно видно как работает видимость в LiveScript .

В LiveScript все является переменными и мы можем писать так:

x = if 2 + 2 == 4
    then 10
    else 0
x #=> 10

Даже такие вещи как циклы, switch и даже try/catch — все является переменными.

Если вы хотите объявить переменную, но не присваивать ничего вы все же можете написать

var x

Вы можете определить константы

переопределение констант приведет к ошибкам на этапе компиляции

const x = 10
x = 0

Однако если вы объявляете константой объект, то он не будет заморожен и вы сможете менять его свойства.

Для тех кто разбирается в CoffeeScript можете глянуть мануал по переработке CoffeeScript в LiveScript:

http://livescript.net/#coffee-to-ls

Если скажете много Спасиб, то напишу еще, ну а вообще-то это официальная документация: http://livescript.net/#overview

Статьи из раздела, Видеочат рулетка