首頁  >  文章  >  web前端  >  ECMAScript6是什麼?

ECMAScript6是什麼?

零下一度
零下一度原創
2017-06-23 09:33:051791瀏覽

ECMAScript 6.0(以下簡稱 ES6)是 JavaScript 語言的下一代標準,已經在2015年6月正式發布了。它的目標,是使得 JavaScript 語言可以用來編寫複雜的大型應用程序,成為企業級開發語言


 

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 - 草稿階段)

  • 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年。


6.Babel 轉碼器


Babel 是廣泛使用的ES6 轉碼器,可以將ES6 代碼轉為ES5 代碼,從而在現有環境中執行。這意味著,你可以用 ES6 的方式編寫程序,而不用擔心現有環境是否支援。以下是一個例子

1 // 转码前2 input.map(item => item + 1);3 4 // 转码后5 input.map(function (item) {6   return item + 1;7 });

面的原始程式碼用了箭頭函數,Babel 將其轉為普通函數,就能在不支援箭頭函數的 JavaScript 環境執行了。

 

以上是ECMAScript6是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn