原網址:http://huangxuan.me/2015/09/22/js-version/javascript
JavaScript 有着很奇怪的命名史。java
1995 年,它做爲網景瀏覽器(Netscape Navigator)的一部分首次發佈,網景給這個新語言命名爲 LiveScript。一年後,爲了搭上當時媒體熱炒 Java 的順風車,臨時更名爲了 JavaScript (固然,Java 和 JavaScript 的關係,就和雷鋒和雷鋒塔同樣 —— 並無什麼關係)git
歪果仁的笑話怎麼一點都很差笑es6
譯者注:wikipedia 的 JavaScript 詞條 更詳細的敘述了這段歷史github
1996 年,網景將 JavaScript 提交給 ECMA International(歐洲計算機制造商協會) 進行標準化,並最終肯定出新的語言標準,它就是 ECMAScript。自此,ECMAScript 成爲全部 JavaScript 實現的基礎,不過,因爲 JavaScript 名字的歷史緣由和市場緣由(很顯然 ECMAScript 這個名字並不使人喜歡……),現實中咱們只用 ECMAScript 稱呼標準,平時都仍是使用 JavaScript 來稱呼這個語言。web
術語(譯者注):編程
- 標準(Standard): 用於定義與其餘事物區別的一套規則
- 實現(Implementation): 某個標準的具體實施/真實實踐
不過,JavaScript 開發者們並不怎麼在意這些,由於在誕生以後的 15 年裏,ECMAScript 並無多少變化,並且現實中的不少實現都已經和標準截然不同。其實在初版的 ECMAScript 發佈後,很快又跟進發布了兩個版本,可是自從 1999 年 ECMAScript 3 發佈後,十年內都沒有任何改動被成功添加到官方規範裏。取而代之的,是各大瀏覽器廠商們爭先進行本身的語言拓展,web 開發者們別無選擇只能去嘗試而且支持這些 API。即便是在 2009 年 ECMAScript 5 發佈以後,仍然用了數年這些新規範才獲得了瀏覽器的普遍支持,但是大部分開發者仍是寫着 ECMAScript 3 風格的代碼,並不以爲有必要去了解這些規範。瀏覽器
譯者注:ECMAScript 第四版草案因爲太過激進而被拋棄,Adobe 的 ActionScript 3.0 是 ECMAScript edition 4 的惟一實現( Flash 差點就統一 Web 了)babel
到了 2012 年,事情忽然開始有了轉變。你們開始推進中止對舊版本 IE 瀏覽器的支持,用 ECMAScript 5 (ES5) 風格來編寫代碼也變得更加可行。與此同時,一個新的 ECMAScript 規範也開始啓動。到了這時,你們開始逐漸習慣以對 ECMAScript 規範的版本支持程度來形容各類 JavaScript 實現。在正式被指名爲 ECMAScript 第 6 版 (ES6) 以前,這個新的標準本來被稱爲 ES.Harmony(和諧)。2015 年,負責制定 ECMAScript 規範草案的委員會 TC39 決定將定義新標準的制度改成一年一次,這意味着每一個新特性一旦被批准就能夠添加,而不像以往同樣,規範只有在整個草案完成,全部特性都沒問題後才能被定稿。所以,ECMAScript 第 6 版在六月份公佈以前,又被重命名爲了 ECMAScript 2015(ES2015)ecmascript
目前,仍然有不少新的 JavaScript 特性或語法正在提議中,包括 decorators(裝飾者),async-await(async-await 異步編程模型) 和 static class properties(靜態類屬性)。它們一般被稱爲 ES7,ES2016 或者 ES.Next 的特性,不過實際上它們只能被稱做提案或者說可能性,畢竟 ES2016 的規範尚未完成,有可能所有都會引入,也有可能一個都沒有。TC39 把一個提案分爲 4 個階段,你能夠在 Babel 的官網 上查看各個提案目前都在哪一個階段了。
因此,咱們該如何使用這一大堆術語呢?下面的列表或許能幫助到你:
在這整個 Blog 中,我將把目前的 ECMAScript 版本稱做 ES6(由於這是大部分開發者最習覺得常的),把明年的規範稱做 ES2016(由於,與 ES6/ES2015 不一樣,這個名字將在整個標準化過程當中沿用)而且將那些尚未成爲 ECMAScript 定稿或草案的將來語言概念稱爲 ECMAScript 提案或者 JavaScript 提案。我將盡我所能在任何可能引發困惑的場合沿用這篇文章。
來學 JavaScript 吧!