ECMAScript 2020
课程推荐:
JavaScript 版本号
旧的 JS 版本以数字命名:ES5 (2009) 和 ES6 (2015)。
从 2016 年开始,版本按年份命名:ECMAScript 2016、2017、2018、2019、...
- ES2020 中的新特性:
- BigInt
- 字符串方法 matchAll()
- 空值合并运算符 (??)
- 可选链运算符 (?.)
- 逻辑 AND 赋值运算符 (&&=)
- 逻辑 OR 赋值运算符 (||=)
- 空值合并赋值运算符 (??=)
- Promise.allSettled()
动态导入
警告
这些特性相对较新。
JavaScript BigInt
较旧的浏览器可能需要替代代码(Polyfill)。
JavaScript BigInt 变量用于存储太大而无法用普通 JavaScript 数字表示的大整数值。
JavaScript 整数最多只能精确到 15 位数字。
Integer 实例 let x = 999999999999999;
let y = 9999999999999999; // 太大
BigInt 实例 let x = 9999999999999999; let y =n;
9999999999999999 n
ສຳລັບທີ່ຈະສ້າງ BigInt, ຂໍ້ສະເໜີຢູ່ບາງສິ່ງນັ້ນ:
ຄວາມຈິງ
let x = 1234567890123456789012345n; let y = BigInt(1234567890123456789012345);
ປະເພດ JavaScriptຂອງ BigInt ຖື "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 (Nullish Coalescing Operator) (?? ການນຳໃຊ້)
ຖ້າຄຳຂັດແຍ່ງທຳອິດບໍ່ແມ່ນຄວາມຈິງnull
ຫລື undefined
)(. ??
ການນຳໃຊ້ການຖືກກັບຄຳຂັດແຍ່ງທຳອິດ
ຖ້າບໍ່ມີຄວາມຈິງຫລືບໍ່ມີຄວາມຈິງຈະຖືກກັບ
ຄວາມຈິງ
let name = null; let text = "missing"; let result = name ?? text;
ຕັ້ງແຕ່ປີ 2020 ເດືອນ 3 ທຸກຄົນຕະຫຼອດບັນດາບັນດາບາດບັບທີ່ປະກອບຫນັງນັ້ນທັງໝົດທີ່ຫຼາຍໃຊ້ກະທົບ nullish operator:
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 (Optional Chaining Operator) (?. ການນຳໃຊ້)
ຖ້າວ່າວັດຖຸ undefined
ຫລື null
ຖ້າການນຳໃຊ້ Optional Chaining Operatorການຖືກກັບ 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 ການຈັດຕັ້ງສຳລັບການຕິດຕໍ່ລະຫວ່າງຄຳຂັດແຍ່ງ
ຖ້າຄຳຂັດແຍ່ງຄັ້ງທຳອິດ ຄວາມຈິງ
,则分配第二个值。
ການນຳໃຊ້ 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 ການຈັດຕັ້ງສຳລັບການຕິດຕໍ່ລະຫວ່າງຄຳຂັດແຍ່ງ
ຖ້າຄຳຂັດແຍ່ງຄັ້ງທຳອິດ ສິ່ງບໍ່ມີຄວາມຈິງ
,则分配第二个值。
ການນຳໃຊ້ 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 |