ECMAScript

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

历史

ECMAScript是由网景的布兰登·艾克开发的一种脚本语言的标准化规范;最初命名为Mocha,后来改名为LiveScript,最后重命名为JavaScript。1995年12月,升阳与网景联合发表了JavaScript。1996年11月,网景公司将JavaScript提交给欧洲计算机制造商协会进行标准化。ECMA-262的第一个版本于1997年6月被Ecma组织采纳。ECMAScript是由ECMA-262标准化的脚本语言的名称。

尽管JavaScript和JScript与ECMAScript兼容,但包含超出ECMAScript的功能。

版本

版本发表日期与前版本的差异
11997年6月首版
21998年6月格式修正,以使得其形式与ISO/IEC16262国际标准一致
31999年12月强大的正则表达式,更好的词法作用域链处理,新的控制指令,异常处理,错误定义更加明确,数据输出的格式化及其它改变
4放弃由于关于语言的复杂性出现分歧,第4版本被放弃,其中的部分成为了第5版本及Harmony的基础;由ActionScript实现
52009年12月新增“严格模式(strict mode)”,一个子集用作提供更彻底的错误检查,以避免结构出错。澄清了许多第3版本的模糊规范,并适应了与规范不一致的真实世界实现的行为。增加了部分新功能,如getters及setters,支持JSON以及在对象属性上更完整的反射
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 版,多个新的概念和语言特性
82017年6月ECMAScript 2017(ES2017),第 8 版,多个新的概念和语言特性
92018年6月ECMAScript 2018 (ES2018),第 9 版,包含了异步循环,生成器,新的正则表达式特性和 rest/spread 语法。
102019年6月ECMAScript 2019 (ES2019),第 10 版
112020年6月ECMAScript 2020 (ES2020),第 11 版
122021年6月ECMAScript 2021 (ES2021),第 12 版
132022年6月ECMAScript 2022 (ES2022),第 13 版

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

兼容性

许多应用程序支持ECMAScript,尤其是网页浏览器。下列表格列出了当前版本的软件与ECMAScript最新版本的兼容性。

脚本引擎参考应用程序兼容性
ES5ES6ES7较新(2016+)
ChakraMicrosoft Edge 18100%96%100%48%
SpiderMonkeyFirefox 94100%98%100%100%
Chrome V8Google Chrome 95、Opera 80、Microsoft Edge 95100%98%100%100%
JavaScriptCore(Nitro)Safari 15100%99%100%90%

该测试的内容托管在官方存储库 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 环境。