ECMAScript歷史

ECMAScript歷史

ECMAScript 從開始制定到最後發佈,歷時15年。下面用一張表來說明它的發展歷程。

時間 ECMA JS 備註
1996.11 ES1.0 JS穩定 Netscape提交給ECMA組織,ES正式出現
1997年 ES1.0 ES正式發佈
1998.06 ES2.0 ES2正式發佈
1999.12 ES3.0 以後版本的完全繼承 業界廣泛支持。
初學者一開始學習的Js,其實學的是3.0的語法
2000年 ES4.0 開始醞釀
2007.10 ES4.0 未通過,因爲太激進了,被廢了。
歷時7年,卻未通過
2008.07 ES3.1 將ES4中涉及ES3.0現在功能改善的一部分,
發佈進此版本中,此版本的項目代號爲Harmony(和諧)
2009.12 ES5.0 基本兼容ES3.1 ES5.0正式發佈。ES5較ES3基本沒什麼變化。
同時公佈了JavaScript.next,後來的ES6。
2011.06 ES5.1 ES5.1成爲ISO國際標準
2013.03 ES6.0 草案定稿
2013.12 ES6.0 草案發布
2015.06 ES6.0 發佈正式版本。

下面上一段文字性的描述:
ECMAScript 1.0 是 1997 年發佈的,接下來的兩年,連續發佈了 ECMAScript 2.0(1998 年 6 月)和 ECMAScript 3.0(1999 年 12 月)。3.0 版是一個巨大的成功,在業界得到廣泛支持,成爲通行標準,奠定了 JavaScript 語言的基本語法,以後的版本完全繼承。直到今天,初學者一開始學習 JavaScript,其實就是在學 3.0 版的語法。

2000 年,ECMAScript 4.0 開始醞釀。這個版本最後沒有通過,但是它的大部分內容被 ES6 繼承了。因此,ES6 制定的起點其實是 2000 年。

爲什麼 ES4 沒有通過呢?因爲這個版本太激進了,對 ES3 做了徹底升級,導致標準委員會的一些成員不願意接受。ECMA 的第 39 號技術專家委員會(Technical Committee 39,簡稱 TC39)負責制訂 ECMAScript 標準,成員包括 Microsoft、Mozilla、Google 等大公司。

2007 年 10 月,ECMAScript 4.0 版草案發布,本來預計次年 8 月發佈正式版本。但是,各方對於是否通過這個標準,發生了嚴重分歧。以 Yahoo、Microsoft、Google 爲首的大公司,反對 JavaScript 的大幅升級,主張小幅改動;以 JavaScript 創造者 Brendan Eich 爲首的 Mozilla 公司,則堅持當前的草案。

2008 年 7 月,由於對於下一個版本應該包括哪些功能,各方分歧太大,爭論過於激烈,ECMA 開會決定,中止 ECMAScript 4.0 的開發,將其中涉及現有功能改善的一小部分,發佈爲 ECMAScript 3.1,而將其他激進的設想擴大範圍,放入以後的版本,由於會議的氣氛,該版本的項目代號起名爲 Harmony(和諧)。會後不久,ECMAScript 3.1 就改名爲 ECMAScript 5。

2009 年 12 月,ECMAScript 5.0 版正式發佈。Harmony 項目則一分爲二,一些較爲可行的設想定名爲 JavaScript.next 繼續開發,後來演變成 ECMAScript 6;一些不是很成熟的設想,則被視爲 JavaScript.next.next,在更遠的將來再考慮推出。TC39 委員會的總體考慮是,ES5 與 ES3 基本保持兼容,較大的語法修正和新功能加入,將由 JavaScript.next 完成。當時,JavaScript.next 指的是 ES6,第六版發佈以後,就指 ES7。TC39 的判斷是,ES5 會在 2013 年的年中成爲 JavaScript 開發的主流標準,並在此後五年中一直保持這個位置。

2011 年 6 月,ECMAScript 5.1 版發佈,並且成爲 ISO 國際標準(ISO/IEC 16262:2011)。

2013 年 3 月,ECMAScript 6 草案凍結,不再添加新功能。新的功能設想將被放到 ECMAScript 7。

2013 年 12 月,ECMAScript 6 草案發布。然後是 12 個月的討論期,聽取各方反饋。

2015 年 6 月,ECMAScript 6 正式通過,成爲國際標準。從 2000 年算起,這時已經過去了 15 年。

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

綜上所述(個人理解):
在以後,不會再正式命名ES7,ES8,…等等,因爲在ES6版本之後將不再以版本號來命名版本了;當然大家可以還是可以這麼叫的。
只會有ES6,使用ES6來泛指ES2015及以後的更新版本。
而爲什麼叫ES6呢,而不是ES7,ES8呢?主要是因爲,它是ES5.1的下一個版本。
而ES2015則是ES6的第一個版本。多數情況下,你可以把ES2015和ES6看成是一個東東

參考:阮一峯的《ECMAScript6入門》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章