ES2021 是 ECMAScript 的最新版本,其中包含了一些新的特性,这些特性可以帮助前端开发者更加高效地编写代码。本文将介绍 ES2021 的一些新特性,并提供相应的示例代码,帮助读者更好地理解这些特性。
String.prototype.replaceAll
在 ES2021 中,String.prototype.replaceAll 方法被添加到了 String 对象中。这个方法可以将字符串中的所有匹配项替换为指定的值。在之前的版本中,我们只能使用正则表达式或 replace 方法来实现这个功能。
示例代码:
const str = 'abcabc'; const newStr = str.replaceAll('a', 'x'); console.log(newStr); // 'xbcxxb'
Promise.any
Promise.any 方法是 ES2021 中新增的一个 Promise 方法,它接收一个 Promise 数组作为参数,返回一个新的 Promise 对象。这个新的 Promise 对象在数组中的任意一个 Promise 对象变为 resolve 状态时就会变为 resolve 状态。如果数组中的所有 Promise 对象都变为 reject 状态,则返回一个 AggregateError 对象,其中包含了所有的 reject 原因。
示例代码:
// javascriptcn.com 代码示例 const promise1 = new Promise((resolve, reject) => { setTimeout(() => reject('error 1'), 1000); }); const promise2 = new Promise((resolve, reject) => { setTimeout(() => reject('error 2'), 2000); }); const promise3 = new Promise((resolve, reject) => { setTimeout(() => resolve('success'), 3000); }); Promise.any([promise1, promise2, promise3]).then((value) => { console.log(value); // 'success' }).catch((error) => { console.log(error); // AggregateError: All promises were rejected });
Logical Assignment Operators
ES2021 中引入了三个逻辑赋值运算符:&&=、||= 和 ??=,它们可以帮助我们更加方便地进行变量的赋值操作。
- &&=:如果左侧的变量为真,则执行右侧的表达式,并将结果赋值给左侧的变量。
- ||=:如果左侧的变量为假,则执行右侧的表达式,并将结果赋值给左侧的变量。
- ??=:如果左侧的变量为 null 或 undefined,则执行右侧的表达式,并将结果赋值给左侧的变量。
示例代码:
// javascriptcn.com 代码示例 let x = 1; x &&= 2; console.log(x); // 2 let y = false; y ||= true; console.log(y); // true let z = null; z ??= 'hello'; console.log(z); // 'hello'
数字分隔符
ES2021 中新增了数字分隔符,可以在数字中间加入下划线,以提高数字的可读性。
示例代码:
const num = 1_000_000; console.log(num); // 1000000
总结
ES2021 中引入了许多新特性,包括 String.prototype.replaceAll、Promise.any、Logical Assignment Operators 和数字分隔符。这些特性可以帮助前端开发者更加高效地编写代码。我们应该学习这些特性,并在项目中尝试使用它们,提高自己的开发效率。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/657bf08cd2f5e1655d6a6088