深入理解 ES11 和 ES12 更新,让你的代码更简洁与实用
近年来,前端领域的发展日新月异,JavaScript 作为前端开发的重要语言,也在不断更新和发展。其中,ES11 和 ES12 的更新为前端开发带来了更加简洁和实用的编程方式。
ES11 更新
ES11 更新于 2020 年正式发布,其中最重要的更新包括以下几个方面:
- 可选链(Optional Chaining)
可选链是一种新的语法,用于简化嵌套对象或数组的属性或元素的访问。在过去,我们需要通过多次判断来防止访问不存在的属性或元素,而现在可选链可以直接使用问号(?)来解决这个问题。示例如下:
-- -------------------- ---- ------- -- ----- -- ---- -- -------- -- ----------------- - -- -- --------- - -- ----- -- -------------------- - -- -- --------- -
- 空值合并运算符(Nullish Coalescing Operator)
空值合并运算符用于判断一个变量是否为 null 或 undefined,如果是,则返回一个默认值。和 || 运算符不同的是,空值合并运算符只有在变量为 null 或 undefined 时才返回默认值。示例如下:
// 以前的写法 const result = input || 'default'; // 现在的写法 const result = input ?? 'default';
- Promise.allSettled()
Promise.allSettled() 方法接受一个 Promise 数组作为参数,返回一个 Promise 对象,该对象在所有 Promise 都已经完成(即 fulfilled 或 rejected)时才会resolve。与 Promise.all() 不同的是,Promise.allSettled() 不会因为某个 Promise 被 rejected 而中止执行。示例如下:
Promise.allSettled([promise1, promise2, promise3]) .then(results => { results.forEach(result => { console.log(result.status); console.log(result.value); }); });
ES12 更新
ES12 更新于 2021 年正式发布,其中最重要的更新包括以下几个方面:
- Promise.any()
Promise.any() 方法接受一个 Promise 数组作为参数,返回一个 Promise 对象,该对象在任何一个 Promise 被 fulfilled 时就会 resolve。如果所有 Promise 都被 rejected,则返回一个 AggregateError 对象,其中包含了所有 Promise 的错误信息。示例如下:
Promise.any([promise1, promise2, promise3]) .then(result => { console.log(result); }) .catch(err => { console.log(err); });
- 数字分隔符(Numeric Separator)
数字分隔符允许在数字中间插入下划线(_),以提高数字的可读性。这个特性在处理大数字或长数字时非常有用。示例如下:
const billion = 1_000_000_000; const pi = 3.1415_9265;
- String.prototype.replaceAll()
String.prototype.replaceAll() 方法用于替换字符串中的所有匹配项。和 String.prototype.replace() 不同的是,replaceAll() 方法会替换所有匹配项,而不是只替换第一个匹配项。示例如下:
const str = 'hello world'; console.log(str.replaceAll('o', '0')); // 'hell0 w0rld'
总结
ES11 和 ES12 的更新为前端开发带来了更加简洁和实用的编程方式。可选链、空值合并运算符、Promise.allSettled()、Promise.any()、数字分隔符和String.prototype.replaceAll() 等新特性,使得我们在编写代码时更加方便快捷。在实际开发中,我们可以充分利用这些新特性,提高代码的可读性和效率。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65cc886fadd4f0e0ff5fe4a5