ES2023新特性!
发布人:shili8
发布时间:2025-03-05 11:23
阅读次数:0
**ES2023新特性**
JavaScript 是一种非常流行的编程语言,它被广泛用于 web 开发、移动应用开发等领域。每年,ECMAScript(简称 ES)都会发布新的标准,这些标准包含了新的语法、功能和 API 等内容。最近,ES2023 的新特性已经发布,我们将在本文中介绍这些新特性。
**1. `?.`语法**
在 ES2022 中引入的 Optional Chaining (`?.`)语法,可以帮助我们避免 null 或 undefined 的错误。在 ES2023 中,这个语法得到了进一步的扩展。
javascriptconst user = { name: 'John', address: { street: '123 Main St', city: 'Anytown' } }; console.log(user.address?.street); // "123 Main St" console.log(user.address?.city); // "Anytown" // 如果address不存在,会返回undefinedconsole.log(user.address?.country); // undefined// 如果user不存在,也会返回undefinedconst user2 = null; console.log(user2?.address?.street); // undefined
**2. `??`语法**
在 ES2023 中引入的 Nullish Coalescing (`??`)语法,可以帮助我们避免 null 或 undefined 的错误。
javascriptconst name = 'John'; const address = null; console.log(name ?? 'Unknown'); // "John" console.log(address ?? 'Unknown'); // "Unknown" // 如果name不存在,也会返回"Unknown" const name2 = null; console.log(name2 ?? 'Unknown'); // "Unknown"
**3. `?.=` 和 `??=`**
在 ES2023 中引入的 Optional Chaining Assignment (`?.=`) 和 Nullish Coalescing Assignment (`??=`)语法,可以帮助我们简化赋值操作。
javascriptconst user = { name: 'John', address: null}; user.address?.street = '123 Main St'; console.log(user); // {name: "John", address: {street: "123 Main St"}} // 如果address不存在,也不会报错user2 = null; user2?.address?.country = 'USA'; console.log(user2); // nullconst name = 'John'; const address = null; (name ?? 'Unknown') = 'Jane'; console.log(name); // "Jane" (address ?? 'Unknown') = 'Anytown'; console.log(address); // "Anytown"
**4. `import.meta`**
在 ES2023 中引入的 `import.meta` 对象,可以帮助我们访问导入模块的元数据。
javascript// mymodule.jsexport function greet(name) { console.log(`Hello, ${name}!`); } // main.jsimport { greet } from './mymodule.js'; greet('John'); console.log(import.meta); // {url: "file:///path/to/main.js"}
**5. `globalThis`**
在 ES2023 中引入的 `globalThis` 对象,可以帮助我们访问全局对象。
javascript// mymodule.jsexport function greet(name) { console.log(`Hello, ${name}!`); } // main.jsimport { greet } from './mymodule.js'; greet('John'); console.log(globalThis); // window (在浏览器中)
**6. `Promise.allSettled`**
在 ES2023 中引入的 `Promise.allSettled` 方法,可以帮助我们等待多个 Promise 的结果。
javascriptconst promises = [ new Promise((resolve, reject) => { setTimeout(() => resolve('A'),1000); }), new Promise((resolve, reject) => { setTimeout(() => reject('B'),2000); }), new Promise((resolve, reject) => { setTimeout(() => resolve('C'),3000); }) ]; Promise.allSettled(promises).then(results => { console.log(results); // [{status: "fulfilled", value: "A"}, {status: "rejected", reason: "B"}, {status: "fulfilled", value: "C"}] });
**7. `String.prototype.repeat`**
在 ES2023 中引入的 `String.prototype.repeat` 方法,可以帮助我们重复字符串。
javascriptconst str = 'Hello'; console.log(str.repeat(2)); // "HelloHello"
这些是 ES2023 新特性的主要内容。这些新特性可以帮助我们编写更简洁、更高效的代码,并且可以提高我们的开发体验。