ES12(也称为 ECMAScript 2021)是 JavaScript 语言规范的最新版本,该版本于 2021 年 6 月发布。在这个版本中,引入了一些新的功能和更改,旨在增强开发人员的生产力和灵活性。在本文中,我们将探讨 ES12 引入的一些新特性。
1. 数组填充方法
ES12 引入了三个数组填充方法:fill()
, fillWithin()
和 at()
fill()
fill()
方法可以用指定值填充数组中的所有元素。如果只传递一个参数,则该值将用作填充值。
const arr = new Array(5).fill("hello"); console.log(arr); // ["hello", "hello", "hello", "hello", "hello"]
fillWithin()
fillWithin()
方法可以在指定的起始索引和终止索引之间用指定值填充数组元素。
const arr = [1, 2, 3, 4, 5]; arr.fillWithin(1, 2, 4); console.log(arr); // [1, 3, 4, 4, 5]
at()
at()
方法返回数组中指定索引的元素。如果索引为负,则从数组末尾开始计数。
const arr = ["a", "b", "c", "d", "e"]; console.log(arr.at(-2)); // "d"
2. Promise.any()
Promise.any()
方法接收一组 Promise 对象并返回一个新的 Promise 对象,该对象由最先解决的 Promise 对象的解决结果解决。如果这些 Promise 对象全部被拒绝,则返回一个拒绝原因数组。
const promise1 = new Promise((resolve, reject) => setTimeout(resolve, 100, "one")); const promise2 = new Promise((resolve, reject) => setTimeout(resolve, 200, "two")); const promise3 = new Promise((resolve, reject) => setTimeout(resolve, 50, "three")); Promise.any([promise1, promise2, promise3]).then(value => console.log(value)); // "three"
3. 逻辑赋值运算符
ES12 引入了三个逻辑赋值运算符:&&=
, ||=
和 ??=
。这些运算符允许我们使用简写语法执行逻辑运算和赋值。
&&=
运算符
&&=
运算符表示“如果左侧的值可以转换为 false
,则不赋值;否则将右侧值赋予左侧值。”
-- -------------------- ---- ------- --- --- - --- ----- ------- - ----- --- --- -------- ----------------- -- -- --- - -- --- --- -------- ----------------- -- -
||=
运算符
||=
运算符表示“如果左侧的值可以转换为 true
,则不赋值;否则将右侧值赋予左侧值。”
-- -------------------- ---- ------- --- ---- - -------- ----- ----------- - ------------ ---- --- ------------ ------------------ -- ------- ---- - --- ---- --- ------------ ------------------ -- -----------
??=
运算符
??=
运算符表示“如果左侧的值为 null
或 undefined
,则将右侧值赋予左侧值。”
-- -------------------- ---- ------- --- -------- - ----- ----- --------------- - -------- -------- --- ---------------- ---------------------- -- ------- -------- - -------- -------- --- ---------------- ---------------------- -- -------
4. 匹配全部
ES12 引入了一种新的字符串匹配方法:matchAll()
。与 match()
方法不同,在一个字符串中找到所有匹配项时,matchAll()
方法返回一个迭代器,我们可以遍历这个迭代器并处理每个匹配项。
const str = "Hello world. How are you?"; const regex = /[a-z]+/g; const matches = str.matchAll(regex); for (const match of matches) { console.log(match[0]); // "ello", "world", "ow", "are", "you" }
结论
ES12 引入的这些新特性和更改使得 JavaScript 编程变得更加高效和简单。通过使用这些新特性,我们可以编写更简洁、易于维护和可读性更好的代码。学会这些新特性将帮助我们提高开发效率,同时也更好地了解和使用 ES12。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6731c6ed0bc820c5823a5874