ECMAScript 新特性记录
最后更新于
1 目录
目录
- 2 背景
- 3 ECMAScript 2015(ES6)
- 4 ECMAScript 2016(ES7)
- 5 ECMAScript 2017(ES8)
- 6 ECMAScript 2018(ES9)
- 7 ECMAScript 2019(ES10)
- 8 ECMAScript 2020(ES11)
- 9 ECMAScript 2021(ES12)
- 10 ECMAScript 2022(ES13)
- 11 ECMAScript 2023(ES14) Coming
- 12 ECMAScript 2024(ES15) Coming
2 背景
TC39 是一个由各大浏览器厂商、JavaScript 引擎厂商、各大技术社区、各大技术公司、各大高校、各大研究机构等组成的委员会, 负责制定 ECMAScript 标准.
2.1 标准修订和日程安排
TC39 打算在每年 7 月向 ECMA 大会提交一份规范以供批准. 以下是制定新规范的大致时间表:
- 2月1日: 生成候选草案.
- 2月-3月: 60天免版税退出期.
- 3月 TC39 会议: 第 4 阶段提案被合并, 最终语义被批准, 新的规范版本从 master 分支出来. 从这时起, 只接受编辑更改.
- 4月-6月: ECMA CC 和 ECMA GA 审查期.
- 7月: ECMA 大会批准新标准.
2.2 已完成的提案
已完成的提案是已经达到第 4 阶段的提案, 并包含在规范的最新草案中.
3 ECMAScript 2015(ES6)
let和const- 解构赋值
- 模板字符串
- 扩展运算符
- 箭头函数
- 函数参数默认值
- 剩余参数
- 对象属性简写
- 对象方法简写
- …
4 ECMAScript 2016(ES7)
Array.prototype.includesArray.prototype.includesTypedArray.prototype.includes
- 指数运算符:
**
4.1 Array.prototype.includes
提议 |
4.1.1 Array.prototype.includes
4.1.2 TypedArray.prototype.includes
4.2 指数运算符
5 ECMAScript 2017(ES8)
Object.values/Object.entries- String padding
String.prototype.padStartString.prototype.padEnd
Object.getOwnPropertyDescriptors- Trailing commas in function parameter lists and calls
- Async Functions
- Shared Memory and Atomics
5.1 Object.values/Object.entries
5.1.1 Object.values
5.1.2 Object.entries
5.2 String padding
5.2.1 String.prototype.padStart
5.2.2 String.prototype.padEnd
5.3 Object.getOwnPropertyDescriptors
5.4 Trailing commas in function parameter lists and calls
函数参数列表和调用中的尾随逗号
5.5 Async Functions
5.6 Shared Memory and Atomics
共享内存和原子操作
6 ECMAScript 2018(ES9)
- Lifting template literal restriction
s(dotAll) flag for regular expressions- 修饰符:
s RegExp.prototype.dotAll
- 修饰符:
- RegExp named capture groups
- Rest/Spread Properties
- RegExp Lookbehind Assertions
?<=?<!
- RegExp Unicode Property Escapes
Promise.prototype.finally- Asynchronous Iteration
for await...ofasync function*
6.1 Lifting template literal restriction
解除模板字符串限制(
\转义不再报错, 仅在作为标签函数的参数时生效)
6.2 s(dotAll) flag for regular expressions
提议 |
使用 s 修饰符, . 可以匹配任意字符, 包括换行符(\n)
6.2.1 修饰符: s
6.2.2 RegExp.prototype.dotAll
6.3 RegExp named capture groups
6.4 Rest/Spread Properties
剩余/扩展属性
6.4.1 Rest Properties
6.4.2 Spread Properties
6.5 RegExp Lookbehind Assertions
6.5.1 ?<=
6.5.2 ?<!
6.6 RegExp Unicode Property Escapes
6.7 Promise.prototype.finally
6.8 Asynchronous Iteration
6.8.1 for await...of
6.8.2 Async generator functions
7 ECMAScript 2019(ES10)
- Optional
catchbinding - JSON superset (TBC)
Symbol.prototype.descriptionFunction.prototype.toStringrevisionObject.fromEntries- Well-formed
JSON.stringify String.prototype.{trimStart,trimEnd}String.prototype.trimStartString.prototype.trimEnd
Array.prototype.{flat,flatMap}Array.prototype.flatArray.prototype.flatMap
7.1 Optional catch binding
catch 语句中的参数及括号可以省略
7.2 JSON superset
提议 |
7.3 Symbol.prototype.description
7.4 Function.prototype.toString revision
7.5 Object.fromEntries
7.6 Well-formed JSON.stringify
7.7 String.prototype.{trimStart,trimEnd}
提议 |
7.7.1 String.prototype.trimStart
7.7.2 String.prototype.trimEnd
7.8 Array.prototype.{flat,flatMap}
提议 |
7.8.1 Array.prototype.flat
7.8.2 Array.prototype.flatMap
8 ECMAScript 2020(ES11)
String.prototype.matchAllimport()BigIntPromise.allSettledglobalThisfor-inmechanics- Optional chaining: 可选链运算符
- Nullish coalescing Operator: 空值合并运算符
import.meta
8.1 String.prototype.matchAll
8.2 import()
8.3 BigInt
8.4 Promise.allSettled
8.5 globalThis
8.6 for-in mechanics
8.7 Optional chaining
8.8 Nullish coalescing Operator
8.9 import.meta
9 ECMAScript 2021(ES12)
String.prototype.replaceAllPromise.any- WeakRefs
- Logical Assignment Operators: 逻辑赋值操作符
&&=||=??=
- Numeric Separators: 数字分隔符
9.1 String.prototype.replaceAll
9.2 Promise.any
9.3 WeakRefs
9.4 Logical Assignment Operators
9.4.1 &&=
9.4.2 ||=
9.4.3 ??=
9.5 Numeric Separators
10 ECMAScript 2022(ES13)
- Class Fields
- Field declarations(Public fields)
- Private fields
- RegExp Match Indices
- 修饰符
d RegExp.prototype.hasIndices
- 修饰符
- Top-level
await - Ergonomic brand checks for private fields
.at()String.prototype.atArray.prototype.atTypedArray.prototype.at
- Accessible
Object.prototype.hasOwnProperty:Object.hasOwn - Class Static Block
- Error Cause
10.1 Class Fields
提议 |
10.1.1 Field declarations(Public fields)
10.1.2 Private fields
10.2 RegExp Match Indices
提议 |
10.2.1 修饰符 d
10.2.2 RegExp.prototype.hasIndices
10.3 Top-level await
10.4 Ergonomic brand checks for private fields
使 in 操作符可以用于检查私有字段
10.5 .at()
提议 |
10.5.1 String.prototype.at
10.5.2 Array.prototype.at
10.5.3 TypedArray.prototype.at
10.6 Accessible Object.prototype.hasOwnProperty: Object.hasOwn
10.7 Class Static Block
10.8 Error Cause
11 ECMAScript 2023(ES14) Coming
- Array find from last
Array.prototype.findLastArray.prototype.findLastIndexTypedArray.prototype.findLastTypedArray.prototype.findLastIndex
- Hashbang Grammar
- Symbols as WeakMap keys
- Change Array by Copy
Array.prototype.toReversedArray.prototype.toSortedArray.prototype.toSplicedArray.prototype.withTypedArray.prototype.toReversedTypedArray.prototype.toSortedTypedArray.prototype.with
11.1 Array find from last
提议 |
11.1.1 Array.prototype.findLast
11.1.2 Array.prototype.findLastIndex
11.1.3 TypedArray.prototype.findLast
11.1.4 TypedArray.prototype.findLastIndex
11.2 Hashbang Grammar
11.3 Symbols as WeakMap keys
11.4 Change Array by Copy
提议 |
11.4.1 Array.prototype.toReversed
11.4.2 Array.prototype.toSorted
11.4.3 Array.prototype.toSpliced
11.4.4 Array.prototype.with
11.4.5 TypedArray.prototype.toReversed
11.4.6 TypedArray.prototype.toSorted
11.4.7 TypedArray.prototype.with
12 ECMAScript 2024(ES15) Coming
- Well-Formed Unicode Strings
Atomics.waitAsync- RegExp v flag with set notation + properties of strings