ECMAScript 2020
JavaScript 版本号
旧版 JS 版本以数字命名:ES5(2009)和 ES6(2015)。
从 2016 年起,版本按年份命名:ECMAScript 2016、2017、2018、2019……
ES2020 中的新功能
- 大整数
- 字符串 matchAll()
- 空值合并运算符(??)
- 可选链接运算符(?。)
- 逻辑与赋值运算符 (&&=)
- 逻辑或赋值 (||=)
- 空值合并赋值 (??=)
- 承诺 allSettled():
Promise.allSettled([prom1,prom2,prom3]).then {}
- 动态导入
警告
这些功能相对较新。
旧版浏览器可能需要替代代码(Polyfill)
JavaScript BigInt
JavaScript BigInt
变量用于存储大整数值,这些值太大而无法用普通 JavaScript 表示Number
.
JavaScript 的整数最多只能精确到 15 位数字。
整数示例
让 x = 999999999999999;
let y = 99999999999999999; // 太大
亲自尝试 »
BigInt 示例
让 x = 9999999999999999;
让 y = 9999999999999999n;
亲自尝试 »
要创建一个 BigInt
,将 n 附加到整数的末尾或调用 BigInt()
:
JavaScript typeof
ABigInt
是“bigint”:
BigInt
自 2020 年 9 月起,所有现代浏览器均支持:
Chrome 67 | 边缘 79 | Firefox 68 | Safari 14 | 歌剧 54 |
2018 年 5 月 | 2020 年 1 月 | 2019 年 7 月 | 2020 年 9 月 | 2018 年 6 月 |
JavaScript 字符串 matchAll()
在 ES2020 之前,没有可用于搜索字符串中某个字符串的所有出现位置的字符串方法。
如果参数是正则表达式,则必须设置全局标志 (g);否则会抛出 TypeError。
如果要搜索不区分大小写,则必须设置不区分大小写的标志 (i):
笔记
ES2021 引入了字符串方法replaceAll()。
空值合并运算符(??)
这 ??
如果不是,则运算符返回第一个参数无效 (null
或者undefined
).
否则,返回第二个。
自 2020 年 3 月起,所有现代浏览器都支持空值运算符:
Chrome 80 | 边缘 80 | Firefox 72 | Safari 13.1 | 歌剧 67 |
2020 年 2 月 | 2020 年 2 月 | 2020 年 1 月 | 2020 年 3 月 | 2020 年 3 月 |
可选链接运算符(?。)
这 可选链接运算符 返回undefined
如果一个对象undefined
或者null
(而不是抛出错误)。
这 ?.=
自 2020 年 3 月起,所有现代浏览器都支持运算符:
Chrome 80 | 边缘 80 | Firefox 74 | Safari 13.1 | 歌剧 67 |
2020 年 2 月 | 2020 年 2 月 | 2020 年 3 月 | 2020 年 3 月 | 2020 年 3 月 |
&&= 运算符
这 逻辑与赋值运算符 用于两个值之间。
如果第一个值是 true
,第二个值被分配。
这 &&=
自 2020 年 9 月起,所有现代浏览器都支持运算符:
Chrome 85 | 边缘 85 | Firefox 79 | Safari 14 | 歌剧 71 |
2020 年 8 月 | 2020 年 8 月 | 2020 年 3 月 | 2020 年 9 月 | 2020 年 9 月 |
||= 运算符
这 逻辑或赋值运算符 用于两个值之间。
如果第一个值是 false
,第二个值被分配。
这 ||=
自 2020 年 9 月起,所有现代浏览器都支持运算符:
Chrome 85 | 边缘 85 | Firefox 79 | Safari 14 | 歌剧 71 |
2020 年 8 月 | 2020 年 8 月 | 2020 年 3 月 | 2020 年 9 月 | 2020 年 9 月 |
??= 运算符
这 空值合并赋值运算符 用于两个值之间。
如果第一个值是 undefined
或者null
,第二个值被分配。
这 ??=
自 2020 年 9 月起,所有现代浏览器都支持运算符:
Chrome 85 | 边缘 85 | Firefox 79 | Safari 14 | 歌剧 71 |
2020 年 8 月 | 2020 年 8 月 | 2020 年 3 月 | 2020 年 9 月 | 2020 年 9 月 |