📅  最后修改于: 2023-12-03 15:21:46.146000             🧑  作者: Mango
ES11,也叫做 ECMAScript 2020,是 Javascript 语言的最新版本。它于 2020 年 6 月发布,并由 ECMA 国际组织 (Ecma International) 维护。ES11 是 Javascript 语言的一个重要更新,它引入了一些新特性和功能,使开发者能够更高效地编写代码,并且提高代码的可读性和可维护性。
可选链操作符(Optional Chaining Operator)是 ES11 中引入的一个新特性。这个操作符可以让我们在对象深层次属性不存在的情况下,安全地访问对象的属性。在以往的实现方式中,我们需要使用 if...else 语句或者三元运算符来进行判断,可选链操作符的引入能够大大简化我们的代码,提高代码的可读性和易维护性。
// 以前的实现方式
const street = person && person.address && person.address.street;
// 使用可选链操作符的实现方式
const street = person?.address?.street;
空值合并运算符(Nullish Coalescing Operator)是另一个在 ES11 中引入的新特性。它可以让我们更加方便地处理 null 或 undefined 的情况,使代码更加简洁易读。
// 使用空值合并运算符的实现方式
const name = person.name ?? "Unknown";
Promise.allSettled() 方法可以让我们在所有 Promise 都完成后再进行操作。它会等待所有 Promise 对象都完成或拒绝,然后返回一个数组,数组的每个元素都是一个对象,包含 promise 状态(fulfilled 或 rejected)和对应的值或原因。
const promises = [
Promise.resolve("Resolved Promise"),
Promise.reject("Rejected Promise"),
Promise.resolve("Another Resolved Promise")
];
Promise.allSettled(promises).then(results => {
console.log(results);
});
// 输出:
// [
// { status: 'fulfilled', value: 'Resolved Promise' },
// { status: 'rejected', reason: 'Rejected Promise' },
// { status: 'fulfilled', value: 'Another Resolved Promise' }
// ]
String.prototype.matchAll() 方法可以在字符串中匹配所有符合条件的子串,并返回一个迭代器,迭代器的每个元素都是包含匹配到的字符串及其捕获组的结果数组。
const regex = /[a-z]/g;
const string = "abc123";
for (const match of string.matchAll(regex)) {
console.log(match);
}
// 输出:
// ["a", index: 0, input: "abc123", groups: undefined]
// ["b", index: 1, input: "abc123", groups: undefined]
// ["c", index: 2, input: "abc123", groups: undefined]
数字分隔符(Numeric Separators)是一种在数字中添加下划线的方式,使数字更容易阅读和理解。
const num1 = 1000000000;
const num2 = 1_000_000_000;
console.log(num1 === num2); // true
ES11 是 Javascript 语言的一个重要更新,它引入了一些新特性和功能,包括可选链操作符、空值合并运算符、Promise.allSettled() 方法、String.prototype.matchAll() 方法和数字分隔符等。这些新特性和功能可以让开发者更加方便地编写代码,提高代码的可读性和可维护性。为了更好地适应未来的前端开发,学习 ES11 是必不可少的。