ES11 中的新特性:一个更好的 JavaScript 编程体验
在开发前端应用程序时,JavaScript 总是不可或缺的一部分。它是一种高级编程语言,用于创建交互式用户界面和动态 Web 站点。为了更好地支持前端开发,每年都会发布新版本的 ECMAScript 规范。ES11 也是其中之一,并引入了一些新的特性和扩展,使 JavaScript 编程更加简单和高效。本文将介绍 ES11 中的新特性,让你更好地掌握 JavaScript 编程的技能。
- 可选链操作符(Optional Chaining Operator)
可选链操作符是 ES11 中引入的一个新特性,它可以避免在嵌套对象结构中出现 null 或 undefined 异常而停止程序运行。在以前的 JavaScript 版本中,要在访问对象属性之前先检查每个属性是否存在,否则如果属性未定义则会导致运行时异常。但是通过可选链操作符(?)可以避免这种情况的发生。例如:
const person = {address: {street: "1234 Main St."}}; console.log(person.address.city?.toUpperCase()); // undefined console.log(person?.address?.city?.toUpperCase()); // undefined
- nullish 合并操作符(Nullish Coalescing Operator)
另一个有用的新操作符是 nullish 合并操作符(??),它是用来替代常规的 || 或使用 undefined 判断赋值等语句。如果运算符左侧的值是 null 或 undefined,则它返回右侧的值。如果左侧的值是其他 Falsy 值(例如 0 和 ''),则返回左侧的值。例如:
const name = null ?? "Unknown"; console.log(name); // Unknown const age = 0 || 18; console.log(age); // 18 const salary = 0 ?? 80000; console.log(salary); // 0
- Promise.allSettled
ES11 给 Promise 对象添加了 allSettled() 方法。与 Promise.all() 方法类似,它也是等待所有 Promise 对象完成。不同的是 Promise.allSettled() 方法不会中断 Promise 链,即使 Promise 拒绝或解决,也会继续运行并最终返回所有 Promise 结果的数组。例如:
// javascriptcn.com 代码示例 const promise_1 = Promise.resolve("Resolved"); const promise_2 = Promise.reject("Rejected"); const promise_3 = Promise.resolve("Another Resolved"); Promise.allSettled([promise_1, promise_2, promise_3]) .then((results) => console.log(results)) .catch((error) => console.log(error)); // Output: // [{ status: 'fulfilled', value: 'Resolved' }, // { status: 'rejected', reason: 'Rejected' }, // { status: 'fulfilled', value: 'Another Resolved' }]
- String.replaceAll()
ES11 引入了一个新的 replaceAll() 方法,它可以方便地替换具有全局匹配特性的字符串。JavaScript 以前已经有了一个 replace() 方法,但它只能替换第一个匹配项。replaceAll() 方法可以将所有匹配项替换为指定的字符串,例如:
const address = "1234 Main St., Apt 25, San Francisco, CA 94111"; const newAddress = address.replaceAll(",", ";"); console.log(newAddress); // Output: 1234 Main St.; Apt 25; San Francisco; CA 94111
总结
以上是 ES11 中的一些主要新特性。使用这些特性,您可以使 JavaScript 代码更加方便,更加简单和高效。当然,要充分利用 ES11 的这些特性,你需要了解它们的用法。希望这篇文章能对你有所帮助,帮助你更好地掌握 JavaScript 编程的技能。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6543912c7d4982a6ebd5c534