讀古今文學網 > 學習JavaScript數據結構與算法(第2版) > 1.8 ECMAScript概述 >

1.8 ECMAScript概述

如果你關注JavaScript的新聞和最新趨勢,肯定聽說過被熱炒的ECMAScript 6和ECMAScript 7。ECMAScript跟JavaScript有什麼關係,又有什麼不同?

ECMAScript是一種腳本語言規範。JavaScript是這個規範的一個實現,Jscript和ActionScript也是如此。

ECMAScript 6和ECMAScript 7

我們知道,JavaScript是一種主要在瀏覽器中運行的語言(也可以運行於NodeJS服務端),每個瀏覽器都可以實現自己版本的JavaScript功能(稍後你將在本書中學習)。這個具體的實現是基於ECMAScript的。因此,瀏覽器提供的功能大都相同(我們的JavaScript代碼可以在所有瀏覽器中運行);然而,在不同的瀏覽器中,每個功能的行為也會存在細微的差別。

目前為止,本章給出的所有代碼都是基於2009年12月發佈的ECMAScript 5。編寫本書時,ECMAScript的最新版本是2015年7月標準化的ECMAScript 6,與上一個版本時隔近六年。負責起草ECMAScript規範的委員會決定把定義新標準的模式改為每年更新一次,新的特性一旦通過就將加入標準。因此,ECMAScript第六版更名為ECMAScript 2015(ES6)。還有一個準備在2016年夏天發佈的新版本,稱為ECMAScript 2016或ECMAScript 7(ES7)。

本節,我們會學習ES6和ES7中引入的一些新功能。

兼容性列表

一定要明白,即便ES6已經發佈,也不是所有的瀏覽器都完全支持新特性。為了更好的體驗,最好使用你選擇的瀏覽器(Firefox或Chrome)的最新版本。

通過以下鏈接,你可以檢查在各個瀏覽器中哪些特性可用。

  • ES6:http://kangax.github.io/compat-table/es6/

  • ES7:http://kangax.github.io/compat-table/es7/

即使有些特性尚未支持,我們也可以現在就開始用新語法和新功能。

對於開發團隊交付的ES6和ES7功能實現,Firefox默認開啟支持。

在谷歌Chrome瀏覽器中,你可以如下圖所示,訪問chrome://flags,開啟實驗性JavaScript標誌,啟用新功能:

 即使開啟了谷歌Chrome瀏覽器的實驗性JavaScript標誌,ES6的部分特性也可能不支持,Firefox同樣如此。要瞭解各個瀏覽器所支持的特性,請查看兼容性列表。

  • 使用Babel.js

    Babel(https://babeljs.io)是一個JavaScript轉譯器,也稱為源代碼編譯器。它將使用了ES6和ES7語言特性的JavaScript代碼轉換成只使用廣泛支持的ES5特性的等價代碼。

    使用Babel.js的方式多種多樣。其中之一是根據設置文檔(https://babeljs.io/docs/setup/)進行安裝。另一種方式是直接在瀏覽器中試用(https://babeljs.io/repl/),如下面的屏幕截圖所示。

    針對後續章節中出現的所有ES6和ES7的例子,我們都將提供一個在Babel中運行和測試的鏈接。