天天看點

[前端學習]ES6小史

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 語言”。