ECMAScript 2020

JavaScript 版本號

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

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

ES2020 中的新特性:

警告

這些特性相對較新。

較舊的瀏覽器可能需要替代代碼(Polyfill)。

JavaScript BigInt

JavaScript BigInt 變量用于存儲太大而無法用普通 JavaScript 數字表示的大整數值。

JavaScript 整數最多只能精確到 15 位數字。

Integer 實例

let x = 999999999999999;
let y = 9999999999999999; // 太大

親自試一試

BigInt 實例

let x = 9999999999999999;
let y = 9999999999999999n;

親自試一試

如需創建 BigInt,請將 n 附加到整數末尾或調用 BigInt():

實例

let x = 1234567890123456789012345n;
let y = BigInt(1234567890123456789012345)

親自試一試

BigInt 的 JavaScript 類型是 "bigint":

實例

let x = BigInt(999999999999999);
let type = typeof x;

親自試一試

自 2020 年 9 月以來,所有現代瀏覽器都支持 BigInt:

Chrome Edge Firefox Safari Opera
Chrome 67 Edge 79 Firefox 68 Safari 14 Opera 54
2018 年 5 月 2020 年 1 月 2019 年 7 月 2020 年 9 月 2018 年 6 月

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()。

空值合并運算符(Nullish Coalescing Operator)(?? 運算符)

如果第一個參數不是空值(nullundefined),則 ?? 運算符返回第一個參數。

否則返回第二個。

實例

let name = null;
let text = "missing";
let result = name ?? text;

親自試一試

自 2020 年 3 月以來,所有現代瀏覽器都支持 nullish 運算符:

Chrome Edge Firefox Safari Opera
Chrome 80 Edge 80 Firefox 72 Safari 13.1 Opera 67
2020 年 2 月 2020 年 2 月 2020 年 1 月 2020 年 3 月 2020 年 3 月

可選鏈運算符(Optional Chaining Operator)(?. 運算符)

如果對象為 undefinednull,則可選鏈運算符返回 undefined(而不是拋出錯誤)。

實例

const car = {type:"Fiat", model:"500", color:"white"};
let name = car?.name;

親自試一試

自 2020 年 3 月以來,所有現代瀏覽器都支持 ?.= 運算符:

Chrome Edge Firefox Safari Opera
Chrome 80 Edge 80 Firefox 74 Safari 13.1 Opera 67
2020 年 2 月 2020 年 2 月 2020 年 3 月 2020 年 3 月 2020 年 3 月

邏輯 AND 賦值運算符(&&= 運算符)

邏輯 AND 賦值運算符用于兩個值之間。

如果第一個值為 true,則分配第二個值。

邏輯 AND 賦值實例

let x = 100;
x &&= 5;

親自試一試

自 2020 年 9 月以來,所有現代瀏覽器都支持 &&= 運算符:

Chrome Edge Firefox Safari Opera
Chrome 85 Edge 85 Firefox 79 Safari 14 Opera 71
2020 年 8 月 2020 年 8 月 2020 年 3 月 2020 年 9 月 2020 年 9 月

邏輯 OR 賦值運算符(||= 運算符)

邏輯 OR 賦值運算符用于兩個值之間。

如果第一個值為 false,則分配第二個值。

邏輯 OR 賦值實例

let x = 10;
x ||= 5;

親自試一試

自 2020 年 9 月以來,所有現代瀏覽器都支持 ||= 運算符:

Chrome Edge Firefox Safari Opera
Chrome 85 Edge 85 Firefox 79 Safari 14 Opera 71
2020 年 8 月 2020 年 8 月 2020 年 3 月 2020 年 9 月 2020 年 9 月

空值合并賦值運算符(??= 運算符)

空值合并賦值運算符(Nullish Coalescing Assignment Operator)用于兩個值之間。

如果第一個值 undefined 或為 null,則分配第二個值。

空值合并賦值實例

let x = 10;
x ??= 5;

親自試一試

自 2020 年 9 月以來,所有現代瀏覽器都支持 ??= 運算符:

Chrome Edge Firefox Safari Opera
Chrome 85 Edge 85 Firefox 79 Safari 14 Opera 71
2020 年 8 月 2020 年 8 月 2020 年 3 月 2020 年 9 月 2020 年 9 月