factograf
ZH
登录

LiveScript

信息框全部数据 11
编程范型
多范式, 函数式, 面向对象
設計者
Jeremy Ashkenas, Satoshi Murakami, George Zahariev
實作者
(同上)
发行时间
2020年7月14日
当前版本
1.6.1
類型系統
动态, 弱类型
作用域
词法作用域
操作系统
跨平台
許可證
MIT
文件扩展名
.ls
網站
livescript.net

LiveScript 是一种函数式编程语言,可通过源到源编译转译为JavaScript。它由CoffeeScript的作者 Jeremy Ashkenas 与 Satoshi Muramaki、George Zahariev 以及其他许多贡献者共同创建。(该名称可能是对 JavaScript 早期名称的致敬:在 1995 年正式发布前的几个月中,JavaScript 曾被称为 LiveScript。)

语法

LiveScript 是 CoffeeScript 的间接后代。

下面的 Hello World 程序使用 LiveScript 编写,同时也兼容 CoffeeScript:

hello = ->
  console.log 'hello, world!'

调用函数时可以使用空括号 hello(),但 LiveScript 将感叹号视为“零参数函数调用”的单字符简写:hello!

LiveScript 还引入了一些其他不兼容的语法习惯:

名称改写

在编译时,LiveScript 解析器会隐式地将短横线命名法(带短横线的变量和函数名)转换为驼峰命名法。

hello-world = ->
  console.log 'Hello, World!'

在此定义下,以下两种调用方式都是合法的。不过,推荐使用相同的短横线语法进行调用。

hello-world!
helloWorld!

这并不妨碍开发者显式使用驼峰命名法或蛇形命名法。不过,短横线命名在符合 LiveScript 习惯用法的代码中非常常见。

管道

管道运算符 |> 会将运算符左侧表达式的结果作为参数传递给右侧的表达式。LiveScript 支持该特性,其他一些函数式语言(如 F# 和 Elixir)也支持管道;在 F# 中,传入的是最后一个参数,而在 Elixir 中则是第一个参数。

"hello!" |> capitalize |> console.log
# > Hello!

将运算符作为函数

当使用括号包裹时,诸如 not 或 + 之类的运算符可以被放入管道中,或像函数一样被调用。

111 |> (+) 222
# > 333

(+) 1 2
# > 3

继续阅读

5种语言

文字来自维基百科,CC BY-SA 4.0 · 来源条目