LiveScript和CoffeeScript的比较
LiveScript比CoffeeScript好的地方:
[ x to y ]
和[ x til y]
, 比[ x .. y ]
和[ x ... y ]
清楚多了。for i from x to y
和for i from x til y
同理。- 默认情况下变量赋值不会污染外层的变量,再也不用
do ( x = undefined, y = undefined, ...) ->
了。如果需要修改外层变量的值,则使用:=
。 const
定义常量,类似于ES6中的const
,但是最终会编译成var
,兼容不支持const
的引擎。do
换成了let
,更明白清晰。require
可以写得更短:require! lib
代替lib = require 'lib'
- 各种函数式编程的语法糖,
(+ 2) 4
,times = (x, y) --> x * y; double = times 2
,[1 2 3] |> map (* 2) |> sum
等等。
LiveScript的问题:
-
有些语法不太好记,JavaScript里的
==
和===
已经让人迷惑了,LiveScript里则是~=
、==
和===
。LiveScript里,以下值为true1 ~= '1'
,[1, 2, 3] === [1, 2, 3]
,但是`[1, 2, 3] ~= '[1, 2, 3]'是false。 -
sourcemap支持还没有。后端开发的话,直接
lsc
运行,问题不大,但是前端在浏览器里调试就痛苦了。 -
语法吸收了很多Haskell,让人忍不住想用函数式的写法,但是并没有尾递归优化等支持。
via my blog
3 回复
<span onclick=“alert(1)”>11</span>
LiveScript 也算 Coco 的分支,所以也有Perl的味道,各种符号,比Haskell复杂得多