2. 常見問答:ECMAScript 6
目錄
請支持這本書:購買(PDF、EPUB、MOBI)捐款
(廣告,請不要封鎖。)

2. 常見問答:ECMAScript 6

本章回答有關 ECMAScript 6 的幾個常見問題。



2.1 我如何立即使用 ES6?

ES6 大部分已在目前的引擎中獲得支援,請參閱 Kangax 的 ES6 相容性表格 以找出哪些地方支援。

對於其他選項(例如互動式 ES6 命令列和透過 Babel 將 ES6 轉譯為 ES5),請參閱「設定 ES6」中的「部署 ECMAScript 6」一章。

2.2 ECMAScript 6 現在不稱為 ECMAScript 2015 了嗎?

是也不是。官方名稱為 ECMAScript 2015,但 ES6 是眾所周知且使用的名稱。這就是我決定在這本書中使用後者的原因。

在 ES6 之後,ECMAScript 版本是透過 新流程 和每年的發布週期建立的。這似乎是轉換到新命名方式的好時機。因此,我將使用「ECMAScript 2016」作為 ES6 之後版本的版本名稱。

2.3 我如何將 ECMAScript 5 程式碼轉移到 ECMAScript 6?

無需執行任何操作:ECMAScript 6 是 ECMAScript 5 的超集。因此,您的所有 ES5 程式碼會自動成為 ES6 程式碼。這有助於逐步採用這個新版本。ES6 如何完全保持向後相容性,在「一個 JavaScript」一章中有說明。

2.4 學習 ECMAScript 5 還有意義嗎?

ES6 在各處都獲得越來越好的支援。這是否表示您不應該再學習 ECMAScript 5 了?並非如此,原因有幾個

2.5 ES6 是不是過於龐大?

偶爾會看到有人指控 ES6 過於龐大,而且引入了太多無用的語法糖(對已經存在的事物提供更方便的語法)。

然而,在許多方面,JavaScript 現在才趕上 Python 和 Ruby 等語言。這兩種語言仍然有更多功能,而且附帶更豐富的標準函式庫。

如果有人抱怨 ES6 太大,我建議他們試用一段時間。沒有人強迫你使用任何新功能。你可以從小處開始(參閱章節「ES6 核心功能」的建議),然後隨著你對 ES6 愈來愈熟悉,再使用更多新功能。到目前為止,我從實際使用 ES6 程式設計的人(相對於只讀過相關資料的人)得到的回饋都是壓倒性地正面的。

此外,表面上看起來像語法糖的事物(例如類別和模組)為這門語言帶來了急需的標準化,並作為未來功能的基礎。

最後,有幾個功能不是為一般程式設計師建立的,而是為函式庫作者建立的(例如產生器、迭代器、代理)。「一般程式設計師」如果知道這些功能,只要知道表面上的東西就好。

2.6 ES6 規格是不是很大?

ECMAScript 規格確實大幅成長:ECMAScript 5.1 的 PDF 有 245 頁,ES6 的 PDF 有 593 頁。但是,相較之下,Java 8 語言規格有 724 頁(不含索引)。此外,ES6 規格包含許多其他語言規格省略的細節,因為這些細節是實作定義的。它也說明了其標準函式庫如何運作2

2.7 ES6 有陣列推導式嗎?

ES6 原本要有陣列和產生器推導式(類似 Haskell 和 Python)。但是它們沒有被加入,因為 TC39 想探索兩個途徑

2.8 ES6 是否為靜態類型?

靜態類型並非 ES6 的一部分。然而,以下兩種技術會將靜態類型加入 JavaScript。類似的功能最終可能會標準化。

靜態類型的兩個好處是

TypeScript 和 Flow 都使用相同的符號。類型註解是可選擇的,這讓這種方法相對輕量。即使沒有註解,通常也可以推論出類型。因此,這種類型檢查甚至對完全沒有註解的程式碼也很有用,作為一致性檢查。

下一篇:3. 一個 JavaScript:避免在 ECMAScript 6 中進行版本控制