跳至內容

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).