ECMAScript 是 JavaScript 语言的标准化规范。以下是各个版本的主要新增特性概述:
ECMAScript 3 (1999)
- 增加异常处理(
try,catch,finally) - 增加正则表达式支持
- 增加
in和instanceof运算符 - 新的控制抽象(
switch,do-while)
ECMAScript 5 (2009)
- 严格模式(
'use strict';) - 增加了许多数组方法(如
forEach,map,filter,reduce等) - 增加
Object.create和其他对象属性特性 - 增加 JSON 支持
ECMAScript 6 (2015) - 也被称为 ES2015
let和const声明关键字- 箭头函数
- 类(Class)语法
- 模块导入和导出
- 解构赋值
- 增加了许多字符串方法(如
startsWith,endsWith和includes) - 模板字面量
- 默认函数参数
- 剩余参数和展开操作符(
...) Promise和异步编程- 生成器(
function*和yield) Map和Set数据结构
ECMAScript 2016 (ES2016)
Array.prototype.includes- 指数运算符(
*)
ECMAScript 2017 (ES2017)
async和await异步函数Object.entries和Object.valuesString.prototype.padStart和String.prototype.padEnd- 尾逗号(trailing commas)在函数参数中的支持
ECMAScript 2018 (ES2018)
- 对象和数组的展开操作符(
...) - 异步迭代器和生成器
Promise.prototype.finallyRegExp的改进,如命名捕获组、断言等
ECMAScript 2019 (ES2019)
Array.prototype.flatMap和Array.prototype.flatObject.fromEntriesString.prototype.trimStart和String.prototype.trimEnd- 可选的
catch绑定 JSON.stringify的改进,支持稳定的键排序
ECMAScript 2020 (ES2020)
BigInt大整数类型- 空值合并运算符(
??) - 可选链运算符(
?.) import()动态导入Promise.allSettledglobalThis统一全局对象
ECMAScript 2021 (ES2021)
String.prototype.replaceAllPromise.any和AggregateError- 弱引用(
WeakRef) FinalizationRegistry用于自定义资源的清理- 逻辑赋值运算符(如
||=,&&=,??=)