LiveScript
外观
| 编程范型 | 多范式, 函数式, 面向对象 |
|---|---|
| 設計者 | Jeremy Ashkenas, Satoshi Murakami, George Zahariev |
| 實作者 | (同上) |
| 发行时间 | 2020年7月14日[1] |
| 当前版本 | 1.6.1 |
| 型態系統 | 动态, 弱类型 |
| 作用域 | 词法作用域 |
| 操作系统 | 跨平台 |
| 許可證 | MIT |
| 文件扩展名 | .ls |
| 網站 | livescript |
| 受影响于 | |
| JavaScript, Haskell, CoffeeScript, F# | |
LiveScript 是一种函数式编程语言,可通过源到源编译转译为JavaScript。它由CoffeeScript的作者 Jeremy Ashkenas 与 Satoshi Muramaki、George Zahariev 以及其他许多贡献者共同创建。[2](该名称可能是对 JavaScript 早期名称的致敬:在 1995 年正式发布前的几个月中,JavaScript 曾被称为 LiveScript。[3])
语法
[编辑]LiveScript 是 CoffeeScript 的间接后代。[4]
下面的 Hello World 程序使用 LiveScript 编写,同时也兼容 CoffeeScript:
hello = ->
console.log 'hello, world!'
调用函数时可以使用空括号 hello(),但 LiveScript 将感叹号视为“零参数函数调用”的单字符简写:hello!
LiveScript 还引入了一些其他不兼容的语法习惯:
名称改写
[编辑]在编译时,LiveScript 解析器会隐式地将短横线命名法(带短横线的变量和函数名)转换为驼峰命名法。
hello-world = ->
console.log 'Hello, World!'
在此定义下,以下两种调用方式都是合法的。不过,推荐使用相同的短横线语法进行调用。
hello-world!
helloWorld!
这并不妨碍开发者显式使用驼峰命名法或蛇形命名法。不过,短横线命名在符合 LiveScript 习惯用法的代码中非常常见。[5]
管道
[编辑]管道运算符 |> 会将运算符左侧表达式的结果作为参数传递给右侧的表达式。LiveScript 支持该特性,其他一些函数式语言(如 F# 和 Elixir)也支持管道;在 F# 中,传入的是最后一个参数,而在 Elixir 中则是第一个参数。
"hello!" |> capitalize |> console.log
# > Hello!
将运算符作为函数
[编辑]当使用括号包裹时,诸如 not 或 + 之类的运算符可以被放入管道中,或像函数一样被调用。
111 |> (+) 222
# > 333
(+) 1 2
# > 3
参考资料
[编辑]- ^ LiveScript Releases. GitHub. [21 February 2021]. (原始内容存档于2025-12-31).
- ^ LiveScript contributors page. GitHub. [20 June 2015]. (原始内容存档于2026-01-01).
- ^ Chapter 4. How JavaScript Was Created. speakingjs.com. [2017-11-21]. (原始内容存档于2020-02-27).
- ^ LiveScript - a language which compiles to JavaScript. [2026-01-31]. (原始内容存档于2021-05-21).
- ^ prelude.ls - 一个以函数式为导向的 LiveScript 工具库. [2026-01-31]. (原始内容存档于2025-12-17).