本頁使用了標題或全文手工轉換

ECMAScript

維基百科,自由的百科全書
跳至導覽 跳至搜尋
ECMAScript
編程範型 多重編程範式原型程式設計函式程式語言指令式編程
設計者 布蘭登·艾克Ecma國際
面市時間 1997年,​21年前​(1997
型態系統 弱型別動態
網站 ecma-international.org
主要實作產品
SpiderMonkeyV8ActionScriptJScriptQtScriptInScript
啟發語言
SelfHyperTalkAWKCPerlPythonJavaScheme
ECMAScript
Crystal source.png
副檔名 .es
網路媒體型式 application/ecmascript
開發者 昇陽電腦公司
Ecma國際
初始版本 1997年6月,​21年前​(1997-06
最新版本
第 9 版
(2018年6月,​9個月前​(2018-06)
格式類型 指令碼語言
網站 ECMA-262ECMA-290
ECMA-327ECMA-357
ECMA-402

ECMAScript是一種由Ecma國際(前身為歐洲電腦製造商協會)通過ECMA-262標準化的指令碼程式設計語言。這種語言在全球資訊網上應用廣泛,它往往被稱為JavaScriptJScript,但實際上後兩者是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]

版本[編輯]

至今為止有八個ECMA-262版本發表。

版本 發表日期 與前版本的差異
1 1997年6月 首版
2 1998年6月 格式修正,以使得其形式與ISO/IEC16262國際標準一致
3 1999年12月 強大的正規表示式,更好的詞法作用域鏈處理,新的控制指令,例外處理,錯誤定義更加明確,資料輸出的格式化及其它改變
4 放棄 由於關於語言的複雜性出現分歧,第4版本被放棄,其中的部分成為了第5版本及Harmony的基礎
5 2009年12月 新增「嚴格模式(strict mode)」,一個子集用作提供更徹底的錯誤檢查,以避免結構出錯。澄清了許多第3版本的模糊規範,並適應了與規範不一致的真實世界實現的行為。增加了部分新功能,如getters及setters,支援JSON以及在物件屬性上更完整的反射[4][5][6][7][8]
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 版,多個新的概念和語言特性[9]
8 2017年6月 ECMAScript 2017(ES2017),第 8 版,多個新的概念和語言特性[10]
9 2018年6月 ECMAScript 2018 (ES2018),第 9 版,包含了非同步迴圈,生成器,新的正規表示式特性和 rest/spread 語法。

2004年6月Ecma組織發表了ECMA-357標準,它是ECMAScript的一個擴延,也被稱為E4X(ECMAScript for XML)。

相容性[編輯]

許多應用程式支援ECMAScript,尤其是網頁瀏覽器。下列表格列出了目前版本的軟體與ECMAScript最新版本的相容性。

指令碼引擎 參考應用程式 相容性[11]
ES5[12] ES6[13] ES7[14] 較新(2016+)[14][15]
Chakra Microsoft Edge 18 100% 96% 100% 58%
SpiderMonkey Firefox 63 100% 98% 100% 78%
Chrome V8 Google Chrome 70、Opera 57 100% 98% 100% 100%
JavaScriptCore(Nitro) Safari 12 99% 99% 100% 90%

參考文獻[編輯]

  1. ^ Krill, Paul. JavaScript creator ponders past, future. InfoWorld. 2008-06-23 [2013-10-31]. 
  2. ^ Press Release. Web.archive.org. [2013-10-31]. (原始內容存檔於2007-09-16). 
  3. ^ JScript VS JavaScript. About.com. 2015-11-25. 
  4. ^ ECMA-262 5th Edition: ECMAScript Language Specification 頁面存檔備份,存於網際網路檔案館
  5. ^ Changes to JavaScript, Part 1: EcmaScript 5
  6. ^ http://www.ecma-international.org/news/PressReleases/PR_Ecma_finalises_major_revision_of_ECMAScript.htm
  7. ^ InfoQ: ECMAScript 5正式發布
  8. ^ Javascript面面觀:核心篇《ECMA-262 Edition 5》
  9. ^ ECMAScript 2016 Language Specification. Ecma International. 2016-06. 
  10. ^ ECMAScript 2017 (ES8): the final feature set. 2ality. [2018-04-23]. 
  11. ^ ES5 is the baseline for this test suite. The conformance rate for other editions reflects support for new features only, not a comprehensive score.
  12. ^ ECMAScript 5 compatibility table. kangax.github.io. [2018-03-19] (英語). 
  13. ^ ECMAScript 6 compatibility table. kangax.github.io. [2018-03-19] (英語). 
  14. ^ 14.0 14.1 ECMAScript 2016+ compatibility table. kangax.github.io. [2018-03-19] (英語). 
  15. ^ Composite score that includes new features from ES7 through next edition drafts

外部連結[編輯]