目录

ECMAScript 2020

JavaScript 版本号

旧的 JS 版本以数字命名:ES5 (2009) 和 ES6 (2015)。

从 2016 年开始,版本按年份命名:ECMAScript 2016、2017、2018、2019,...

ES2020 的新特性

警告

这些功能相对较新。

较旧的浏览器可能需要替代代码(Polyfill)

JavaScript 大整型

JavaScriptBigInt变量用于存储大整数值,这些值太大而无法用普通 JavaScript 表示Number

JavaScript 整数最多只能精确到 15 位左右。

整数示例

let x = 999999999999999;
let y = 9999999999999999; // too big
亲自试一试 »

BigInt 示例

let x = 9999999999999999;
let y = 9999999999999999n;
亲自试一试 »

创建一个BigInt,将 n 附加到整数或调用的末尾BigInt()

示例

let x = 1234567890123456789012345n;
let y = BigInt(1234567890123456789012345)
亲自试一试 »

JavaScripttypeofABigInt是"bigint":

示例

let x = BigInt(999999999999999);
let type = typeof x;
亲自试一试 »

BigInt自 2020 年 9 月起所有现代浏览器均支持:

Chrome 67 Edge 79 Firefox 68 Safari 14 Opera 54
May 2018 Jan 2020 Jul 2019 Sep 2020 Jun 2018

JavaScript 字符串 matchAll()

在 ES2020 之前,没有可用于搜索字符串中出现的所有字符串的字符串方法。

示例

const iterator = text.matchAll("Cats");
亲自试一试 »

如果参数是正则表达式,则必须设置全局标志(g),否则会抛出 TypeError。

示例

const iterator = text.matchAll(/Cats/g);
亲自试一试 »

如果要搜索不区分大小写,则必须设置不敏感标志 (i):

示例

const iterator = text.matchAll(/Cats/gi);
亲自试一试 »

笔记

ES2021引入了字符串方法replaceAll()。



空合并运算符 (??)

这个??如果不是,则运算符返回第一个参数无效的null或者undefined)。

否则返回第二个。

示例

let name = null;
let text = "missing";
let result = name ?? text;
亲自试一试 »

自 2020 年 3 月起,所有现代浏览器都支持 nullish 运算符:

Chrome 80 Edge 80 Firefox 72 Safari 13.1 Opera 67
Feb 2020 Feb 2020 Jan 2020 Mar 2020 Mar 2020

可选链接运算符 (?.)

这个可选的链接运算符回报undefined如果一个物体是undefined或者null(而不是抛出错误)。

示例

const car = {type:"Fiat", model:"500", color:"white"};
let name = car?.name;
亲自试一试 »

这个?.=自 2020 年 3 月起,所有现代浏览器均支持运算符:

Chrome 80 Edge 80 Firefox 74 Safari 13.1 Opera 67
Feb 2020 Feb 2020 Mar 2020 Mar 2020 Mar 2020

&&= 运算符

这个逻辑与赋值运算符用在两个值之间。

如果第一个值是true,分配第二个值。

逻辑与赋值示例

let x = 10;
x &&= 5;
亲自试一试 »

这个&&=自 2020 年 9 月起,所有现代浏览器均支持运算符:

Chrome 85 Edge 85 Firefox 79 Safari 14 Opera 71
Aug 2020 Aug 2020 Mar 2020 Sep 2020 Sep 2020

||= 运算符

这个逻辑或赋值运算符用在两个值之间。

如果第一个值是false,分配第二个值。

逻辑或赋值示例

let x = 10;
x ||= 5;
亲自试一试 »

这个||=自 2020 年 9 月起,所有现代浏览器均支持运算符:

Chrome 85 Edge 85 Firefox 79 Safari 14 Opera 71
Aug 2020 Aug 2020 Mar 2020 Sep 2020 Sep 2020

??= 运算符

这个空合并赋值运算符用在两个值之间。

如果第一个值是undefined或者null,分配第二个值。

空合并赋值示例

let x;
x ??= 5;
亲自试一试 »

这个??=自 2020 年 9 月起,所有现代浏览器均支持运算符:

Chrome 85 Edge 85 Firefox 79 Safari 14 Opera 71
Aug 2020 Aug 2020 Mar 2020 Sep 2020 Sep 2020