Quire
ECMAScript
编程范型多重編程範式、基于原型编程、函數程式語言、指令式編程
設計者布蘭登·艾克、Ecma國際
发行时间1997年
類型系統弱类型、動態
網站ecma-international.org
主要實作產品
SpiderMonkey、V8、ActionScript、JScript、QtScript、InScript
受影响于
Self、HyperTalk、AWK、C、Perl、Python、Java、Scheme

ECMAScript是一种由Ecma国际(前身为欧洲计算机制造商协会)在标准ECMA-262中定义的脚本语言规范。这种语言在万维网上应用广泛,它往往被称为JavaScript或JScript,但实际上后两者是ECMA-262标准的实现和扩展。

历史#edit

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]。

版本#edit

版本发表日期与前版本的差异
11997年6月首版
21998年6月格式修正,以使得其形式与ISO/IEC16262国际标准一致
31999年12月强大的正则表达式,更好的词法作用域链处理,新的控制指令,异常处理,错误定义更加明确,数据输出的格式化及其它改变
4放棄由於關於語言的複雜性出現分歧,第4版本被放棄,其中的部分成為了第5版本及Harmony的基礎;由ActionScript實現
52009年12月新增「嚴格模式(strict mode)」,一個子集用作提供更徹底的錯誤檢查,以避免結構出錯。澄清了許多第3版本的模糊規範,並適應了與規範不一致的真實世界實現的行為。增加了部分新功能,如getters及setters,支持JSON以及在物件屬性上更完整的反射[4][5][6][7][8]
5.12011年6月ECMAScript标5.1版形式上完全一致于国际标准ISO/IEC 16262:2011。
62015年6月ECMAScript 2015(ES2015),第 6 版,最早被称作是 ECMAScript 6(ES6),添加了类和模块的语法,其他特性包括迭代器,Python风格的生成器和生成器表达式,箭头函数,二进制数据,静态类型数组,集合(maps,sets 和 weak maps),promise,reflection 和 proxies。作为最早的 ECMAScript Harmony 版本,也被叫做ES6 Harmony。
72016年6月ECMAScript 2016(ES2016),第 7 版,多個新的概念和語言特性[9](主要包括 `Array.prototype.includes`、指数运算符 `**`)
82017年6月ECMAScript 2017(ES2017),第 8 版,主要特性包括:`async`/`await` 函数、共享内存与 `Atomics`、`Object.values()`/`Object.entries()`、字符串填充方法(`padStart`/`padEnd`)等[10]
92018年6月ECMAScript 2018(ES2018),第 9 版,主要特性包括:异步迭代(`for-await-of`)、对象 rest/spread 属性、正则表达式改进(`s` 标志、命名捕获组、后行断言等)[11]
102019年6月ECMAScript 2019 (ES2019),第 10 版
112020年6月ECMAScript 2020 (ES2020),第 11 版
122021年6月ECMAScript 2021 (ES2021),第 12 版
132022年6月ECMAScript 2022 (ES2022),第 13 版
142023年6月ECMAScript 2023 (ES2023),第 14 版,新增数组查找方法、WeakMap 的 symbol 键支持等[12]
152024年6月ECMAScript 2024 (ES2024),第 15 版,新增 Well-Formed Unicode Strings、Promise.withResolvers、ArrayBuffer 可调整大小等特性[13]
162025年6月ECMAScript 2025 (ES2025),第 16 版,新增语法提案包括集合字面量、RegExp 标志 v 等[14]
17预计2026年6月ECMAScript 2026 (ES2026),第 17 版(草案),包含若干处于 stage 4 的提案[15]

2004年6月Ecma组织发表了ECMA-357标准,它是ECMAScript的一个扩延,也被称为E4X(ECMAScript for XML)。

相容性#edit

许多应用程序支持ECMAScript,尤其是网页浏览器。下列表格列出了目前版本的軟體與ECMAScript最新版本的相容性,数据基于官方 test262 测试套件[16]的通过率。

腳本引擎參考應用程式相容性(test262 通过率)[17]
ES2022 (ES13)ES2023 (ES14)ES2024 (ES15)ES2025 (ES16)
SpiderMonkeyFirefox 136100%100%99%98%
V8Google Chrome 134、Microsoft Edge 134、Opera 119100%100%100%99%
JavaScriptCore (Nitro)Safari 18.4100%100%99%97%
ChakraMicrosoft Edge 旧版(已停止开发)不再维护

测试结果可在 test262.report (页面存档备份,存于互联网档案馆) 实时查看,该网站汇总了各引擎对 ECMAScript 规范官方测试套件的执行情况。

參考文獻#edit

  1. ^ Krill, Paul. JavaScript creator ponders past, future. InfoWorld. 2008-06-23 [2013-10-31]. (原始内容存档于2014-09-20).
  2. ^ Press Release. Web.archive.org. [2013-10-31]. (原始内容存档于2007-09-16).
  3. ^ JScript VS JavaScript. About.com. 2015-11-25 [2018-06-30]. (原始内容存档于2015-11-26).
  4. ^ ECMA-262 5th Edition: ECMAScript Language Specification (PDF). [2010-04-08]. (原始内容存档 (PDF)于2015-04-12).
  5. ^ Changes to JavaScript, Part 1: EcmaScript 5. [2009-07-07]. (原始内容存档于2011-02-09).
  6. ^ 存档副本. [2009-07-07]. (原始内容存档于2011-08-22).
  7. ^ InfoQ: ECMAScript 5正式发布. [2010-04-08]. (原始内容存档于2010-04-10).
  8. ^ Javascript面面觀:核心篇《ECMA-262 Edition 5》. [2010-04-08]. (原始内容存档于2011-02-18).
  9. ^ ECMAScript 2016 Language Specification. Ecma International. 2016-06 [2016-08-20]. (原始内容存档于2016-08-20).
  10. ^ ECMAScript 2017 Language Specification. Ecma International. [2026-03-28]. (原始内容存档于2020-12-17).
  11. ^ ECMAScript 2018 Language Specification. Ecma International. [2026-03-28]. (原始内容存档于2020-12-26).
  12. ^ ECMAScript 2023 Language Specification. Ecma International. [2026-03-28]. (原始内容存档于2026-07-10).
  13. ^ ECMAScript 2024 Language Specification. Ecma International. [2026-03-28]. (原始内容存档于2026-02-10).
  14. ^ ECMAScript 2025 Language Specification. Ecma International. [2026-03-28]. (原始内容存档于2026-07-10).
  15. ^ ECMAScript 2026 Language Specification (draft). Ecma International. [2026-03-28]. (原始内容存档于2020-05-08).
  16. ^ test262: ECMAScript Test Suite. TC39. [2026-03-28]. (原始内容存档于2019-10-01).
  17. ^ test262 Report. [2026-03-28]. (原始内容存档于2026-06-09).

外部連結#edit

This article is mirrored from “ECMAScript” on 中文 Wikipedia, revision 95011230, written by Wikipedia's contributors and licensed CC BY-SA 4.0. Editing it here creates a Quire copy with its own history.

Synced with Wikipedia revision 95011230 · 3 hours ago