ECMAScript 6.0 (以下簡稱 ES6)是 JavaScript 語言的下一代標準,已經在 2015 年 6 月正式發布。它的目標,是使得 JavaScript 語言可以用來編寫復雜的大型應用程序,成為企業級開發語言。
參考:《ECMAScript 6 入門教程》
一、ECMAScript 和 JavaScript 關系
一個常見的問題是,ECMAScript 和 JavaScript 到底是什么關系?
要講清楚這個問題,需要回顧歷史。1996 年 11 月,JavaScript 的創造者 Netscape 公司,決定將 JavaScript 提交給標準化組織 ECMA,希望這種語言能夠成為國際標準。次年,ECMA 發布 262 號標準文件(ECMA-262)的第一版,規定了瀏覽器腳本語言的標準,并將這種語言稱為 ECMAScript,這個版本就是 1.0 版。
該標準從一開始就是針對 JavaScript 語言制定的,但是之所以不叫 JavaScript,有兩個原因。一是商標,Java 是 Sun 公司的商標,根據授權協議,只有 Netscape 公司可以合法地使用 JavaScript 這個名字,且 JavaScript 本身也已經被 Netscape 公司注冊為商標。二是想體現這門語言的制定者是 ECMA,不是 Netscape,這樣有利于保證這門語言的開放性和中立性。
因此,ECMAScript 和 JavaScript 的關系是,前者是后者的規格,后者是前者的一種實現(另外的 ECMAScript 方言還有 JScript 和 ActionScript)。日常場合,這兩個詞是可以互換的。
二、ES6 與 ECMAScript 2015 的關系
ECMAScript 2015(簡稱 ES2015)這個詞,也是經常可以看到的。它與 ES6 是什么關系呢?
2011 年,ECMAScript 5.1 版發布后,就開始制定 6.0 版了。因此,ES6 這個詞的原意,就是指 JavaScript 語言的下一個版本。
但是,因為這個版本引入的語法功能太多,而且制定過程當中,還有很多組織和個人不斷提交新功能。事情很快就變得清楚了,不可能在一個版本里面包括所有將要引入的功能。常規的做法是先發布 6.0 版,過一段時間再發 6.1 版,然后是 6.2 版、6.3 版等等。
但是,標準的制定者不想這樣做。他們想讓標準的升級成為常規流程:任何人在任何時候,都可以向標準委員會提交新語法的提案,然后標準委員會每個月開一次會,評估這些提案是否可以接受,需要哪些改進。如果經過多次會議以后,一個提案足夠成熟了,就可以正式進入標準了。這就是說,標準的版本升級成為了一個不斷滾動的流程,每個月都會有變動。
標準委員會最終決定,標準在每年的 6 月份正式發布一次,作為當年的正式版本。接下來的時間,就在這個版本的基礎上做改動,直到下一年的 6 月份,草案就自然變成了新一年的版本。這樣一來,就不需要以前的版本號了,只要用年份標記就可以了。
ES6 的第一個版本,就這樣在 2015 年 6 月發布了,正式名稱就是《ECMAScript 2015 標準》(簡稱 ES2015)。2016 年 6 月,小幅修訂的《ECMAScript 2016 標準》(簡稱 ES2016)如期發布,這個版本可以看作是 ES6.1 版,因為兩者的差異非常小(只新增了數組實例的includes方法和指數運算符),基本上是同一個標準。根據計劃,2017 年 6 月發布 ES2017 標準。
因此,ES6 既是一個歷史名詞,也是一個泛指,含義是 5.1 版以后的 JavaScript 的下一代標準,涵蓋了 ES2015、ES2016、ES2017 等等,而 ES2015 則是正式名稱,特指該年發布的正式版本的語言標準。本書中提到 ES6 的地方,一般是指 ES2015 標準,但有時也是泛指“下一代 JavaScript 語言”。
三、總結
ECMA
歐洲計算機制造商協會
ES6
ECMAScript 這門標準的第 6 代版本(2015)。ECMAScript 是語言的標準,6 是版本號。
具體內容:語法 + API
歷史版本:ES1——>3、ES5——>6(ES4 被廢棄了),我們目前使用 JS 的大部分內容都是 ES3 的部分。
ES6 的兼容性:主流瀏覽器的最新版本幾乎都全部支持 ES6; IE 老版本等不支持的瀏覽器,可以使用 Babel 轉碼。
ES 與 JS 的關系
JavaScript(瀏覽器端)= ECMAScript(語法+API)+ DOM + BOM