ECMAScript/ES6版本
ECMA-262共发布了十个版本。版本10的工作已于2019年6月完成。ECMA-262的十个版本如下:
版本 | 发布日期 | 名称 | 与上一版本相比的变化 | 主编 |
---|---|---|---|---|
1 | 1997年6月 | — | 第一版本 | Guy L. Steele Jr. |
2 | 1997年6月 | — | 为使规范与ISO/IEC 16262国际标准完全一致而进行的编辑更改。 | Mike Cowlishaw |
3 | 1997年12月 | — | 增加了正则表达式,新的控制语句,更好的字符串处理,更严格的错误定义,数字输出格式,try/catch 异常处理以及其他增强功能。 |
|
4 | 废弃 | — | 第四版由于语言复杂性的政治差异而被放弃。 此版本建议的一些功能已完全删除。 | Pratap Lakshman, Allen Wirfs-Brock |
5 | 2009年12月 | — | 增加了“strict mode”,这是一个子集,旨在通过错误检查提供更多信息并避免易于出错的构造。 它阐明了第三版规范中的一些歧义,并且还适应了与该规范始终不同的实际实现的行为。 添加了一些新功能,例如getter和setter,以及对JSON的库支持。 | Pratap Lakshman, Allen Wirfs-Brock |
5.1 | 2011年6月 | — | 5.1版ECMAScript标准与第三版ISO/IEC 16262:2011完全一致。 | Pratap Lakshman, Allen Wirfs-Brock |
6 | 2015年6月 | ECMAScript 2015 (ES 2015) | 添加了用于编写应用程序的新语法,包括类声明,ES6模块,但以与ECMAScript5严格模式相同的术语定义了它们。 此更新的其他功能包括迭代器,箭头函数表达式,Python样式的生成器,二进制数据,类型化数组,新集合等。 | Allen Wirfs-Brock |
7 | 2016年6月 | ECMAScript 2016 (ES 2016) | 主要的标准语言包括一些功能,例如破坏模式的变量,函数和变量的块作用域,正确的尾调用,数字的幂运算符等。 | Brian Terison |
8 | 2017年6月 | ECMAScript 2017 (ES 2017) | 它包括异步/等待构造,该构造通过使用生成器和promise工作。 它还包含并发和原子的功能,与promises的语法集成(异步/等待)。 | Brian Terison |
9 | 2018年6月 | ECMAScript 2018 (ES 2018) | 它的新功能包括变量的rest/扩展运算符,异步迭代。 | Brian Terison |
10 | 2019年6月 | ECMAScript 2019 (ES 2019) | 新功能包括Array.prototype.flatMap , Array.prototype.flat 以及对Array.sort 和Object.fromEntries 的更改。 |
Brian Terison, Bradley Farias, Jordan Harband |
在2004年6月,ECMA International发布了ECMA-357标准,用于定义ECMAScript的扩展,即ECMAScript for XML。
下面是ECMAScript一些新版本的详细说明。
第四版(废弃)
ECMA-262的第四版(ECMAScript 4或ES4)是自1999年第三版发布以来对ECMAScript的第一次更新。该规范的目标是到2008年10月完成。
到2008年8月,ECMAScript的第四版已缩减为代号为ECMAScript Harmony的项目。讨论中当时用于和谐的功能包括类,破坏性分配,模块系统,可选的类型注释和静态类型等。
另外,为增加新功能,某些ES3错误计划在版本4中修复。这些修复和其他错误,以及对JSON编码/解码的支持,均已包含在ECMAScript第五版规范中。
在2007年末,Eich(后来成为Mozilla基金会的CTO)和Chris Wilson(微软的Internet浏览器平台架构师)之间的辩论在许多博客上公开了。
第四版由于语言复杂性的政治差异而被放弃。此版本建议的一些功能已完全删除。
第5版
雅虎,微软,谷歌和第四版的其他反对者组成了其小组委员会,以设计不太雄心勃勃的ECMAScript 3更新,名为ECMAScript 3.1。 该版本将侧重于库和安全更新,重点是兼容性。 在公开辩论之后,ECMAScript 3.1和ECMAScript 4团队就折衷方案达成了共识。
一段时间后,Brendan Eich宣布ECMA TC39将专注于ECMAScript 3.1(后来的ECMAScript,第五版)的工作,以及各方的全面合作,并且供应商将在2009年之前实现至少两个实施目标。 ECMA TC39已发布了与第5版相关的草案,并宣布可互操作性实施的测试将于7月中旬完成。 但是,2009年12月3日,发布了第五版ECMA-262。
第6版 - ECMAScript 2015
最初,此版本称为ECMAScript 6或ES6,后来更名为ECMAScript 2015,该版本于2015年6月完成。此更新为编写复杂的应用程序添加了新的基本语法,包括诸如(class Example { ... })
,ES6模块,例如import * as moduleName from "..."; export const Example
示例,但以与ECMAScript 5严格模式相同的顺序定义它们。它还包括其他一些新功能,例如Python样式生成器,用于局部声明的let
关键字,箭头函数表达式,用于常量变量声明的const
关键字,二进制数据,类型数组,新集合,反射,数字和数学增强等。
第7版 - ECMAScript 2016
第七版正式称为ECMAScript 2016,于2016年6月完成。标准语言包括功能和变量的块作用域,破坏变量的模式,正确的尾部调用,异步编程的async/await
关键字,求幂等功能。数字的运算符**
。
第8版 - ECMAScript 2017
第八版正式称为ECMAScript 2017,于2017年6月完成。它包括使用promise进行工作的async/await
结构(在CS future
,promise
,deferd
和delay
是指用于同步执行的结构)并发编程语言和生成器。
ECMAScript 2017或第8版还包括原子和并发功能以及带有Promise的语法集成功能。
第9版-ECMAScript 2018
第9版正式称为ECMAScript 2018,已于2018年6月完成。它包括新功能,例如变量的剩余/扩展运算符(三个点:…
标识符),异步迭代等。
第10版-ECMAScript 2019
第10版正式称为ECMAScript 2019,于2019年6月发布。它包括一些新功能,例如Array.prototype.flatMap
,Array.prototype.flat
以及对Array.sort
和Object.fromEntries
的更改。
ES.Next
它只不过是一个动态名称,在撰写本文时就引用了下一个版本。单一版本的协调计划太过严格,将其功能分为两组:第一组具有最高优先级,并且将成为ES5之后的后续版本。 ECMAScript.next是该版本的代号,以避免过早提交已被ES4证实为可疑的版本号。第二组有时间直到ECMAScript.next
之后。