ES6 版本

2024 年 8 月 29 日 | 5 分钟阅读

ECMA-262 已经发布了十个版本。 第 10 版的工作于 2019 年 6 月完成。ECMA-262 的十个版本如下所示:

版本发布日期名称与先前版本的更改编辑器
1.1997 年 6 月第一版Guy L. Steele Jr.
2.1998 年 6 月编辑修改,以使规范与 ISO/IEC 16262 国际标准完全一致。Mike Cowlishaw
3.1999 年 12 月添加正则表达式、新的控制语句、更好的字符串处理、更严格的错误定义、数字输出格式、try/catch 异常处理和其他增强功能。Mike Cowlishaw
4.已废弃由于在语言复杂性方面的政治分歧,第四版被放弃。为该版本提出的几个功能已完全删除。
5.2009 年 12 月添加“严格模式”,该子集旨在通过错误检查提供更多信息并避免容易出错的结构。 它澄清了第 3 版规范中的几个歧义,并且还适应了真实世界实现的行为,这些行为与该规范始终不同。 添加了一些新功能,例如 getter 和 setter、对 JSON 的库支持。Pratap Lakshman, Allen Wirfs-Brock
5.12011 年 6 月ECMAScript 标准的 5.1 版与 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)它包括 async/await 构造,它通过使用生成器和 Promise 来工作。 它还包含用于并发和原子、与 Promise 的语法集成 (async/await) 的功能。Brian Terison
9.2018 年 6 月ECMAScript 2018 (ES 2018)其新功能包括变量的 rest/spread 运算符、异步迭代。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 的版本。

第 4 版(已放弃)

ECMA-262 的第四版(ECMAScript 4ES4)是自 1999 年发布第三版以来 ECMAScript 的首次更新。该规范的目标是在 2008 年 10 月之前完成。

到 2008 年 8 月,ECMAScript 的第四版已被缩小到代号为 ECMAScript Harmony 的项目中。 当时关于 Harmony 的讨论中的功能包括类、解构赋值、模块系统、可选类型注释和静态类型等。

此外,为了添加新功能,一些 ES3 错误计划在第 4 版中修复。 这些修复和其他修复,以及对 JSON 编码/解码的支持,都包含在 ECMAScript 第五版规范中。

2007 年底,Eich(后来的 Mozilla Foundation 的 CTOChris Wilson(Microsoft Internet Explorer 的平台架构师之间的辩论在许多博客上公开。

由于在语言复杂性方面的政治分歧,第四版被放弃。为该版本提出的几个功能已完全删除。

第 5 版

Yahoo、Microsoft、Google 和第四版的其他反对者组成了他们的小组委员会,用于设计一个不太雄心勃勃的 ECMAScript 3 更新,名为 ECMAScript 3.1。 此版本将侧重于库和安全更新,并非常强调兼容性。 在公开辩论之后,ECMAScript 3.1 和 ECMAScript 4 团队就折衷方案达成一致。

一段时间后,Brendan Eich 宣布 ECMA TC39 将专注于 ECMAScript 3.1(后来的 ECMAScript,第五版)的工作,并与所有各方完全合作,并且供应商将在 2009 年之前实现至少两个实现。 2009 年 4 月,ECMA TC39 发布了与第 5th 版相关的草案,并宣布互操作实现的测试可能会在 7 月中旬完成。 但是,在 2009 年 12 月 3 日,发布了 ECMA-262 的第五版。

第 6 版 - ECMAScript 2015

最初,此版本被称为 ECMAScript 6ES6,后来更名为 ECMAScript 2015,该版本于 2015 年 6 月最终确定。 此更新添加了用于编写复杂应用程序的新基本语法,包括类声明,例如 (class Example { ... }),ES6 模块,例如 import * as moduleName from "..."; export const Example,但以与 ECMAScript 5 严格模式相同的顺序定义它们。 它还包括一些其他新功能,例如 Python 风格的生成器,用于本地声明的 let 关键字,箭头函数表达式,用于常量变量声明的 const 关键字,二进制数据,类型化数组,新集合,反射,数字和数学增强功能等等。

第 7 版 - ECMAScript 2016

第 7th 版正式称为 ECMAScript 2016,该版本于 2016 年 6 月最终确定。 标准语言包括函数和变量的块作用域、变量的解构模式、适当的尾调用、用于异步编程的 async/await 关键字、数字的求幂运算符 ** 等功能。

第 8 版 - ECMAScript 2017

第 8th 版正式称为 ECMAScript 2017,该版本于 2017 年 6 月最终确定。 它包括使用 Promise 工作的 async/await 构造在 CS 中,future、promise、deferreddelay 是指用于在某些并发编程语言中同步程序执行的构造和生成器。

ECMAScript 2017 或第八版还包括原子和并发功能,以及与 Promise 的语法集成。

第 9 版 - ECMAScript 2018

第 9th 版正式称为 ECMAScript 2018,该版本于 2018 年 6 月最终确定。 它包括变量的 rest/spread 运算符三个点: …identifier)、异步迭代等新功能。

第 10 版 - ECMAScript 2019

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

ES.Next

它只是一个动态名称,在编写时指的是下一个版本。 Harmony 计划对单个版本的承诺太多,这将其功能分为两个组:第一组具有最高优先级,并且将在 ES5 之后的后续版本中发布。 为了避免过早地承诺使用已经证明可疑的 ES4 的版本号,ECMAScript.next 是该版本的代号。 第二组有时间直到 ECMAScript.next 之后。


下一个主题ES6 环境搭建