当前位置:实例文章 » HTML/CSS实例» [文章]ES2023新特性!

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 新特性的主要内容。这些新特性可以帮助我们编写更简洁、更高效的代码,并且可以提高我们的开发体验。

其他信息

其他资源

Top