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