本页面涵盖了 ECMAScript (也称为 ES) 下一个版本的全部标准化特性。
ES2022
- 私有字段 – 了解如何在类中定义私有字段。
- 私有方法 – 向您展示如何在类中定义私有方法。
- 顶层 await – 解释顶层 await 模块及其用例。
- Array.prototype.at() 方法 – 指导您如何使用 Array.prototype.at() 方法访问数组元素。
ES2021
- String.prototype.replaceAll() – 将与模式匹配的子字符串的所有出现次数替换为新的子字符串。
- 逻辑赋值运算符 – 向您介绍逻辑赋值运算符,包括
||=
、&&=
和??=
- 数字分隔符 – 向您展示如何通过使用下划线作为数字分隔符来提高数字的可读性。
- Promise.any() – 了解如何使用 JavaScript
Promise.any()
方法返回第一个完成的Promise
。
ES2020
- 空值合并运算符 (
??
) – 接受两个操作数,如果左操作数为null
或undefined
,则返回右操作数。 - 可选链运算符 (
?.
) – 简化访问位于连接对象链深处的属性的方式,而无需检查链中的每个引用是否为null
或undefined
。 - Promise.allSettled() – 接受一个 Promise 列表,并返回一个新的 Promise,该 Promise 解析为一个值数组,这些值是由输入 Promise 解决(已解决或拒绝)的。
- 动态导入 – 向您展示如何通过类似函数的对象
import()
动态导入模块。 - BigInt – 向您介绍一种新的原始类型,它可以表示大于 253 – 1 的整数,这是 Javascript 可以使用
Number
类型可靠地表示的最大数字。 - globalThis – 提供了一种标准方式来访问跨环境的全局对象。
ES2019
- Array.prototype.flat() – 递归地将数组扁平化到指定的深度。
- Array.prototype.flatMap() – 对每个元素执行映射函数并扁平化结果。它是
map()
后跟flat()
方法的组合。 - Object.fromEntries() – 将键值对列表转换为对象。
- 可选 catch 绑定 – 当绑定不会被使用时,省略 catch 绑定。
- String.prototype.trimStart() – 移除字符串开头的空格字符。
- String.prototype.trimEnd() – 移除字符串末尾的空格字符。
ES2018
- 对象展开运算符 – 对对象使用展开运算符 (
...
)。 - Promise.prototype.finally() – 当 Promise 解决时执行一段代码,无论其结果如何。
- 异步迭代器 – 了解如何使用异步迭代器按顺序访问异步数据源。
- 异步生成器 – 向您展示如何创建异步生成器。
ES2017
- 填充字符串 – 向您展示如何使用一对方法:
padStart()
和padEnd()
,它们允许您用另一个字符串填充字符串到特定长度。 - Object.values() – 将对象的自身可枚举属性的值作为数组返回。
- Object.entries() – 返回对象的自身可枚举字符串键属性的
[key, value]
对。 - JavaScript async / await – 使用更清晰的语法编写异步代码。
ES2016
- 指数运算符 – 向您介绍指数运算符 (**) ,它允许您计算以指数为幂的底数,这类似于
Math.pow()
方法。 - 数组 includes() – 允许您检查数组中是否存在元素。
ES 版本
下表描述了 ECMAScript 的版本和官方名称。
版本 | 官方名称 | 发布日期 |
---|---|---|
ES12 | ES2021 | 2020 年 6 月 |
ES11 | ES2020 | 2020 年 6 月 |
ES10 | ES2019 | 2019 年夏季 |
ES9 | ES2018 | 2018 年 6 月 |
ES8 | ES2017 | 2017 年 6 月 |
ES7 | ES2016 | 2016 年 6 月 |
ES6 | ES2015 | 2015 年 6 月 |
ES5.1 | ES5.1 | 2011 年 6 月 |
ES5 | ES5 | 2009 年 12 月 |
ES4 | ES4 | 已放弃 |
ES3 | ES3 | 1999 年 12 月 |
ES2 | ES2 | 1998 年 6 月 |
ES1 | ES1 | 1997 年 6 月 |