ES10(也称为 ECMAScript 2019)是 JavaScript 的第10个版本,于2019年发布。
-
Array.prototype.flat()
和Array.prototype.flatMap()
:这两个方法用于处理嵌套数组。flat()
方法将嵌套数组展平为一个新数组,而flatMap()
方法首先使用映射函数将数组映射为一个新数组,然后再展平这个新数组。 -
String.prototype.trimStart()
和String.prototype.trimEnd()
:这两个方法用于去除字符串的开头和结尾的空格。 -
Object.fromEntries()
:这个方法可以将一个键值对的列表转换为一个对象。它接受一个可迭代对象,如数组或 Map 对象,并返回一个新的对象。 -
Symbol.prototype.description
:这个属性用于获取 Symbol 对象的描述字符串。 -
BigInt
:这是一种新的原始数据类型,用于表示任意精度的整数。它可以通过在整数后面添加n
来创建。 -
动态
import()
:这是一种动态导入模块的方式,可以在运行时根据条件来决定加载哪个模块。 -
globalThis
:这是一个全局对象的引用,可以在任何环境中访问全局对象,无论是在浏览器中还是在 Node.js 中。
附加
- 空值合并运算符(??):当左侧的操作数为null或undefined时,返回右侧的操作数,否则返回左侧的操作数。例如:
let a = null; let b = "Hello, World!";
console.log(a ?? b); // 输出 "Hello, World!
- 数字分隔符(_):用于增强数字的可读性,在千位和百万位等位置添加下划线。例如:
console.log(1000_000); // 输出 1,000,000
-
Promise.finally(): 当Promise对象完成(无论是fulfilled还是rejected)时,都会执行该方法。
-
逻辑运算符&&和||的默认返回值:逻辑运算符&&和||在进行运算时,如果操作数为undefined或null,会返回undefined或null,否则返回运算结果。例如:
let a; console.log(a && b); // 输出 undefined
- 链式调用/可选链操作符(?.):这个操作符可以简化对可能为 null 或 undefined 的属性或方法的访问。
在旧的 JavaScript 中,如果要访问一个对象的属性或调用一个方法,需要先检查该对象是否为 null 或 undefined,以避免出现错误。例如:
if (obj && obj.prop && obj.prop.method) {
obj.prop.method();
}
使用可选链操作符简化后:
obj?.prop?.method?.();
如果 obj、obj.prop 或 obj.prop.method 中的任何一个为 null 或 undefined,那么整个表达式的值将为 undefined,而不会抛出错误。
可选链操作符还可以用于数组的索引访问和函数的调用。例如:
const arr = [1, 2, 3];
console.log(arr?.[0]); // 输出 1
const func = obj?.method?.();