簡介
ES6站宗, 全稱 ECMAScript 6.0 食店,是 JavaScript 的下一個版本標準,2015.06 發(fā)版均抽。
ES6 主要是為了解決 ES5 的先天不足,比如 JavaScript 里并沒有類的概念其掂,但是目前瀏覽器的 JavaScript 是 ES5 版本油挥,大多數(shù)高版本的瀏覽器也支持 ES6,不過只實現(xiàn)了 ES6 的部分特性和功能款熬。
ECMAScript 的背景
JavaScript 是大家所了解的語言名稱深寥,但是這個語言名稱是商標( Oracle 公司注冊的商標)。因此贤牛,JavaScript 的正式名稱是 ECMAScript 惋鹅。1996年11月,JavaScript 的創(chuàng)造者網(wǎng)景公司將 JS 提交給國際化標準組織 ECMA(European computer manufactures association殉簸,歐洲計算機制造聯(lián)合會)闰集,希望這種語言能夠成為國際標準,隨后 ECMA 發(fā)布了規(guī)定瀏覽器腳本語言的標準般卑,即 ECMAScript武鲁。這也有利于這門語言的開放和中立。
ECMAScript 的歷史
ES6 是 ECMAScript 標準十余年來變動最大的一個版本蝠检,為其添加了許多新的語法特性沐鼠。
- 1997 年 ECMAScript 1.0 誕生。
- 1998 年 6 月 ECMAScript 2.0 誕生,包含一些小的更改饲梭,用于同步獨立的 ISO 國際標準乘盖。
- 1999 年 12 月 ECMAScript 3.0誕生,它是一個巨大的成功排拷,在業(yè)界得到了廣泛的支持侧漓,它奠定了 JS 的基本語法,被其后版本完全繼承监氢。直到今天布蔗,我們一開始學習 JS ,其實就是在學 3.0 版的語法浪腐。
- 2000 年的 ECMAScript 4.0 是當下 ES6 的前身纵揍,但由于這個版本太過激烈,對 ES 3 做了徹底升級议街,所以暫時被"和諧"了泽谨。
- 2009 年 12 月,ECMAScript 5.0 版正式發(fā)布特漩。ECMA 專家組預計 ECMAScript 的第五個版本會在 2013 年中期到 2018 年作為主流的開發(fā)標準吧雹。2011年6月,ES 5.1 版發(fā)布涂身,并且成為 ISO 國際標準雄卷。
- 2013 年,ES6 草案凍結蛤售,不再添加新的功能丁鹉,新的功能將被放到 ES7 中;
- 2015 年 6 月悴能, ES6 正式通過揣钦,成為國際標準。
ES6 的目標與愿景
成為更好編寫的開發(fā)語言有以下目標漠酿。
- 適應更復雜的應用冯凹;
- 實現(xiàn)代碼庫之間的共享;
- 不斷迭代維護新版本炒嘲。
ECMAScript 和 JavaScript 的關系
一個常見的問題是谈竿,ECMAScript 和 JavaScript 到底是什么關系?
- 要講清楚這個問題摸吠,需要回顧歷史空凸。1996 年 11 月,JavaScript 的創(chuàng)造者 Netscape 公司寸痢,決定將 JavaScript 提交給標準化組織 ECMA呀洲,希望這種語言能夠成為國際標準。次年,ECMA 發(fā)布 262 號標準文件(ECMA-262)的第一版道逗,規(guī)定了瀏覽器腳本語言的標準兵罢,并將這種語言稱為 ECMAScript,這個版本就是 1.0 版滓窍。
- 該標準從一開始就是針對 JavaScript 語言制定的卖词,但是之所以不叫 JavaScript,有兩個原因吏夯。一是商標此蜈,Java 是 Sun 公司的商標,根據(jù)授權協(xié)議噪生,只有 Netscape 公司可以合法地使用 JavaScript 這個名字裆赵,且 JavaScript 本身也已經(jīng)被 Netscape 公司注冊為商標。二是想體現(xiàn)這門語言的制定者是 ECMA跺嗽,不是 Netscape战授,這樣有利于保證這門語言的開放性和中立性。
- 因此桨嫁,ECMAScript 和 JavaScript 的關系是植兰,前者是后者的規(guī)格谨朝,后者是前者的一種實現(xiàn)(另外的 ECMAScript 方言還有 JScript 和 ActionScript)康二。日常場合,這兩個詞是可以互換的疆前。
ES6 與 ECMAScript 2015 的關系
ECMAScript 2015(簡稱 ES2015)這個詞肚逸,也是經(jīng)常可以看到的彬坏。它與 ES6 是什么關系呢朦促?
- 2011 年,ECMAScript 5.1 版發(fā)布后栓始,就開始制定 6.0 版了务冕。因此,ES6 這個詞的原意幻赚,就是指 JavaScript 語言的下一個版本禀忆。
- 但是,因為這個版本引入的語法功能太多落恼,而且制定過程當中箩退,還有很多組織和個人不斷提交新功能。事情很快就變得清楚了佳谦,不可能在一個版本里面包括所有將要引入的功能戴涝。常規(guī)的做法是先發(fā)布 6.0 版,過一段時間再發(fā) 6.1 版,然后是 6.2 版啥刻、6.3 版等等奸鸯。
- 但是,標準的制定者不想這樣做可帽。他們想讓標準的升級成為常規(guī)流程:任何人在任何時候娄涩,都可以向標準委員會提交新語法的提案,然后標準委員會每個月開一次會映跟,評估這些提案是否可以接受蓄拣,需要哪些改進。如果經(jīng)過多次會議以后申窘,一個提案足夠成熟了弯蚜,就可以正式進入標準了。這就是說剃法,標準的版本升級成為了一個不斷滾動的流程碎捺,每個月都會有變動。
- 標準委員會最終決定贷洲,標準在每年的 6 月份正式發(fā)布一次收厨,作為當年的正式版本。接下來的時間优构,就在這個版本的基礎上做改動诵叁,直到下一年的 6 月份,草案就自然變成了新一年的版本钦椭。這樣一來拧额,就不需要以前的版本號了,只要用年份標記就可以了彪腔。
- ES6 的第一個版本侥锦,就這樣在 2015 年 6 月發(fā)布了,正式名稱就是《ECMAScript 2015 標準》(簡稱 ES2015)德挣。2016 年 6 月恭垦,小幅修訂的《ECMAScript 2016 標準》(簡稱 ES2016)如期發(fā)布,這個版本可以看作是 ES6.1 版格嗅,因為兩者的差異非常蟹Α(只新增了數(shù)組實例的includes方法和指數(shù)運算符),基本上是同一個標準屯掖。根據(jù)計劃玄柏,2017 年 6 月發(fā)布 ES2017 標準。
- 因此贴铜,ES6 既是一個歷史名詞禁荸,也是一個泛指右蒲,含義是 5.1 版以后的 JavaScript 的下一代標準,涵蓋了 ES2015赶熟、ES2016瑰妄、ES2017 等等,而 ES2015 則是正式名稱映砖,特指該年發(fā)布的正式版本的語言標準间坐。本書中提到 ES6 的地方,一般是指 ES2015 標準邑退,但有時也是泛指“下一代 JavaScript 語言”竹宋。
ES6兼容性(環(huán)境搭建)
ES6(ES2015) 支持的環(huán)境 IE10+, Chrome, FireFox, 移動端, NodeJS
目前各大瀏覽器基本上都支持 ES6 的新特性,其中 Chrome 和 Firefox 瀏覽器對 ES6 新特性最友好地技,IE7~11 基本不支持 ES6蜈七。以下是各大瀏覽器支持情況及開始時間:
- 解決不兼容辦法,編譯莫矗、轉(zhuǎn)換
在線轉(zhuǎn)換
或者提前編譯- Babel 中文網(wǎng)](https://www.babeljs.cn/)
Babel 入門教程 阮一峰;
Babel 是一個 JavaScript 編譯器;
一個廣泛使用的轉(zhuǎn)碼器飒硅,可以將ES6代碼轉(zhuǎn)為ES5代碼,從而在現(xiàn)有環(huán)境執(zhí)行;
現(xiàn)在就用 ES6 編寫程序作谚,而不用擔心現(xiàn)有環(huán)境是否支持;