跳转到内容

LiveScript

维基百科,自由的百科全书
LiveScript
编程范型多范式, 函数式, 面向对象
設計者Jeremy Ashkenas, Satoshi Murakami, George Zahariev
實作者(同上)
发行时间2020年7月14日,​5年前​(2020-07-14[1]
当前版本1.6.1
型態系統动态, 弱类型
作用域词法作用域
操作系统跨平台
許可證MIT
文件扩展名.ls
網站livescript.net 編輯維基數據鏈接
受影响于
JavaScript, Haskell, CoffeeScript, F#

LiveScript 是一种函数式编程语言,可通过源到源编译转译为JavaScript。它由CoffeeScript的作者 Jeremy Ashkenas英语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

参考资料

[编辑]
  1. ^ LiveScript Releases. GitHub. [21 February 2021]. (原始内容存档于2025-12-31). 
  2. ^ LiveScript contributors page. GitHub. [20 June 2015]. (原始内容存档于2026-01-01). 
  3. ^ Chapter 4. How JavaScript Was Created. speakingjs.com. [2017-11-21]. (原始内容存档于2020-02-27). 
  4. ^ LiveScript - a language which compiles to JavaScript. [2026-01-31]. (原始内容存档于2021-05-21). 
  5. ^ prelude.ls - 一个以函数式为导向的 LiveScript 工具库. [2026-01-31]. (原始内容存档于2025-12-17).