編程範型 | 多重編程範式、基於原型編程、函數程式語言、指令式編程 |
---|---|
設計者 | 布蘭登·艾克、Ecma國際 |
面市時間 | 1997年 |
型態系統 | 弱類型、動態 |
主要實作產品 | |
SpiderMonkey、V8、ActionScript、JScript、QtScript、InScript | |
受啟發於 | |
Self、HyperTalk、AWK、C、Perl、Python、Java、Scheme |
副檔名 | .es |
---|---|
網路媒體型式 | application/ecmascript |
開發者 | 昇陽電腦公司 Ecma國際 |
初始版本 | 1997年6月 |
最新版本 | 第 11 版 2020年6月 |
格式類型 | 腳本語言 |
網站 | ECMA-262ECMA-290 ECMA-327ECMA-357 ECMA-402 |
ECMAScript是一種由Ecma國際(前身為歐洲計算機製造商協會)在標準ECMA-262中定義的腳本語言規範。這種語言在萬維網上應用廣泛,它往往被稱為JavaScript或JScript,但實際上後兩者是ECMA-262標準的實現和擴展。
歷史
ECMAScript是由網景的布蘭登·艾克開發的一種腳本語言的標準化規範;最初命名為Mocha,後來改名為LiveScript,最後重新命名為JavaScript[1]。1995年12月,昇陽與網景聯合發表了JavaScript[2]。1996年11月,網景公司將JavaScript提交給歐洲計算機製造商協會進行標準化。ECMA-262的第一個版本於1997年6月被Ecma組織採納。ECMAScript是由ECMA-262標準化的腳本語言的名稱。
儘管JavaScript和JScript與ECMAScript相容,但包含超出ECMAScript的功能[3]。
版本
版本 | 發表日期 | 與前版本的差異 |
---|---|---|
1 | 1997年6月 | 首版 |
2 | 1998年6月 | 格式修正,以使得其形式與ISO/IEC16262國際標準一致 |
3 | 1999年12月 | 強大的正則表達式,更好的詞法作用域鏈處理,新的控制指令,異常處理,錯誤定義更加明確,數據輸出的格式化及其它改變 |
4 | 放棄 | 由於關於語言的複雜性出現分歧,第4版本被放棄,其中的部分成為了第5版本及Harmony的基礎;由ActionScript實現 |
5 | 2009年12月 | 新增「嚴格模式(strict mode)」,一個子集用作提供更徹底的錯誤檢查,以避免結構出錯。澄清了許多第3版本的模糊規範,並適應了與規範不一致的真實世界實現的行為。增加了部分新功能,如getters及setters,支持JSON以及在物件屬性上更完整的反射[4][5][6][7] |
5.1 | 2011年6月 | ECMAScript標5.1版形式上完全一致於國際標準ISO/IEC 16262:2011。 |
6 | 2015年6月 | ECMAScript 2015(ES2015),第 6 版,最早被稱作是 ECMAScript 6(ES6),添加了類和模塊的語法,其他特性包括迭代器,Python風格的生成器和生成器表達式,箭頭函數,二進制數據,靜態類型數組,集合(maps,sets 和 weak maps),promise,reflection 和 proxies。作為最早的 ECMAScript Harmony 版本,也被叫做ES6 Harmony。 |
7 | 2016年6月 | ECMAScript 2016(ES2016),第 7 版,多個新的概念和語言特性[8] |
8 | 2017年6月 | ECMAScript 2017(ES2017),第 8 版,多個新的概念和語言特性[9] |
9 | 2018年6月 | ECMAScript 2018 (ES2018),第 9 版,包含了異步循環,生成器,新的正則表達式特性和 rest/spread 語法。 |
10 | 2019年6月 | ECMAScript 2019 (ES2019),第 10 版 |
11 | 2020年6月 | ECMAScript 2020 (ES2020),第 11 版 |
2004年6月Ecma組織發表了ECMA-357標準,它是ECMAScript的一個擴延,也被稱為E4X(ECMAScript for XML)。
相容性
許多應用程序支持ECMAScript,尤其是網頁瀏覽器。下列表格列出了目前版本的軟體與ECMAScript最新版本的相容性。
腳本引擎 | 參考應用程式 | 相容性[10] | |||
---|---|---|---|---|---|
ES5[11] | ES6[12] | ES7[13] | 較新(2016+)[13][14] | ||
Chakra | Microsoft Edge 18 | 100% | 96% | 100% | 48% |
SpiderMonkey | Firefox 67 | 100% | 98% | 100% | 83% |
Chrome V8 | Google Chrome 75、Opera 62 | 100% | 98% | 100% | 98% |
JavaScriptCore(Nitro) | Safari 12.1 | 99% | 99% | 100% | 87% |
該測試的內容託管在官方存儲庫 https://github.com/tc39/test262 中,也可以在 https://v8.github.io/test262/website/default.html 和 https://bakkot.github.io/test262-web-runner/ 上訪問最新的Web瀏覽器測試套件工具。官方存儲庫還指向由社區維護的其他項目測試套件,以測試其他例如 Node.js 的 ECMAScript / JavaScript 環境。
參考文獻
- ↑ Krill, Paul. JavaScript creator ponders past, future. InfoWorld. 2008-06-23 [2013-10-31].
- ↑ Press Release. Web.archive.org. [2013-10-31].
- ↑ JScript VS JavaScript. About.com. 2015-11-25 [2018-06-30].
- ↑ ECMA-262 5th Edition: ECMAScript Language Specification (PDF). [2010-04-08].
- ↑ 存档副本. [2009-07-07].
- ↑ InfoQ: ECMAScript 5正式发布. [2010-04-08].
- ↑ Javascript面面觀:核心篇《ECMA-262 Edition 5》. [2010-04-08].
- ↑ ECMAScript 2016 Language Specification. Ecma International. 2016-06 [2016-08-20].
- ↑ ECMAScript 2017 (ES8): the final feature set. 2ality. [2018-04-23].
- ↑ ES5 is the baseline for this test suite. The conformance rate for other editions reflects support for new features only, not a comprehensive score.
- ↑ ECMAScript 5 相容性列表. kangax.github.io. [2018-11-18] (英語).
- ↑ ECMAScript 6 相容性列表. kangax.github.io. [2018-11-18] (英語).
- ↑ 13.0 13.1 ECMAScript 2016+ 相容性列表. kangax.github.io. [2018-11-18] (英語).
- ↑ 包括從ES7到下一版草案的綜合評分
外部連結