ES2020(ES11)
实际上,ECMAScript 的版本命名从 ES2015(ES6)之后,改为按年份命名,因此没有直接被称为 ES11 的版本。但是,如果你指的是 2020 年发布的版本,那应该是 ECMAScript 2020,也常被简称为 ES2020。ES2020 引入了多个新特性,旨在进一步增强语言的表达能力和性能。以下是一些主要的新增特性:
1. Nullish Coalescing Operator (??)
- 这个新操作符
??是一个逻辑操作符,用于在左侧操作数为null或undefined时返回右侧操作数,否则返回左侧操作数。它提供了一种更简洁的空值检查方式。
2. Optional Chaining (?.)
?.操作符允许你安全地访问深层嵌套的对象属性,即使中间某个属性不存在也不会抛出错误,而是返回undefined。
3. Promise.allSettled
Promise.allSettled方法与Promise.all类似,但它会等到所有 Promise 都完成(无论是 resolve 还是 reject)并返回一个包含每个 Promise 状态的对象数组。
4. GlobalThis
globalThis是一个全局对象的引用,无论在浏览器还是 Node.js 环境下,它都能让你访问到全局作用域。这在跨环境编程时非常有用。
5. BigInt Literals and Math Functions
- ES2020 扩展了对
BigInt的支持,现在可以直接在数字字面量中使用n后缀来创建BigInt,并且增加了几个与BigInt相关的数学函数。
6. Dynamic Import Assertions
- 动态导入 (
import()) 现在可以包含断言(assertions),允许你指定导入模块的类型(如 "type": "json")。
7. Private Class Fields and Methods
- 私有类字段和方法现在可以用
#前缀定义,这使得类成员的可见性更加明确。
8. RegExp Unicode Property Escapes
- 正则表达式中的 Unicode 属性转义现在支持更多字符集,比如
\p{L}可以匹配任何类型的字母。
9. Array.prototype.at()
at()方法提供了一种更安全地访问数组元素的方式,它支持负数索引,可以更容易地访问数组末尾的元素。
这些新特性进一步丰富了 JavaScript 的功能,提高了代码的可读性和维护性。随着现代浏览器和 JavaScript 运行时环境对这些特性的支持,开发者可以开始在项目中采用这些新功能,以编写更高效、更安全的代码。