【ECMAScript 6 入門】1.ECMAScript 6簡介

1、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)。日常場合,這兩個詞是可以互換的。

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

3、語法提案的批准流程

任何人都可以向標準委員會(又稱 TC39 委員會)提案,要求修改語言標準。

一種新的語法從提案到變成正式標準,需要經歷五個階段。每個階段的變動都需要由 TC39 委員會批准。

  • Stage 0 - Strawman(展示階段)
  • Stage 1 - Proposal(徵求意見階段)
  • Stage 2 - Draft(草案階段)
  • Stage 3 - Candidate(候選人階段)
  • Stage 4 - Finished(定案階段)

一個提案只要能進入 Stage 2,就差不多肯定會包括在以後的正式標準裏面。ECMAScript 當前的所有提案,可以在 TC39 的官方網站GitHub.com/tc39/ecma262查看。

本書的寫作目標之一,是跟蹤 ECMAScript 語言的最新進展,介紹 5.1 版本以後所有的新語法。對於那些明確或很有希望,將要列入標準的新語法,都將予以介紹。

4、ECMAScript 的歷史

ES6 從開始制定到最後發佈,整整用了 15 年。

前面提到,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 年。

文檔

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