ECMAScript/ES6版本

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.sortObject.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 futurepromisedeferddelay是指用于同步执行的结构)并发编程语言和生成器。
ECMAScript 2017或第8版还包括原子和并发功能以及带有Promise的语法集成功能。

第9版-ECMAScript 2018

第9版正式称为ECMAScript 2018,已于2018年6月完成。它包括新功能,例如变量的剩余/扩展运算符(三个点:标识符),异步迭代等。

第10版-ECMAScript 2019

第10版正式称为ECMAScript 2019,于2019年6月发布。它包括一些新功能,例如Array.prototype.flatMapArray.prototype.flat以及对Array.sortObject.fromEntries的更改。

ES.Next

它只不过是一个动态名称,在撰写本文时就引用了下一个版本。单一版本的协调计划太过严格,将其功能分为两组:第一组具有最高优先级,并且将成为ES5之后的后续版本。 ECMAScript.next是该版本的代号,以避免过早提交已被ES4证实为可疑的版本号。第二组有时间直到ECMAScript.next之后。