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 или 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) !-> … Добавляется восклицательный знак.
Никаких объявлений переменных. Забудьте про объявления. Присвоение через знак =
И тут важное отличие от 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