文章目录
- 导文
- Array.prototype.flat()和Array.prototype.flatMap()
- Object.fromEntries()
- String.prototype.trimStart()和String.prototype.trimEnd()
- 格式化数字
- 动态导入
- 可选的catch绑定
- BigInt
- globalThis
导文
JavaScript ES10,也被称为ES2019,引入了一些新的特性和语言改进
Array.prototype.flat()和Array.prototype.flatMap()
这两个方法可以简化多维数组的处理。flat()方法可将多维数组展平为一维数组,而flatMap()方法在展平数组的同时还可以对每个元素执行映射操作。
const arr = [1, 2, [3, 4, [5, 6]]];
// 使用 flat() 方法展平数组
const flattened = arr.flat();
console.log(flattened); // [1, 2, 3, 4, [5, 6]]
// 使用 flatMap() 方法展平数组并映射操作
const mappedAndFlattened = arr.flatMap(num => num * 2);
console.log(mappedAndFlattened); // [2, 4, 6, 8, 10, 12]
Object.fromEntries()
这个静态方法允许将键值对列表转换为对象。它接收一个键值对的可迭代对象(如数组)作为参数,并返回一个新的对象。
const entries = [['name', 'John'], ['age', 30], ['city', 'New York']];
// 将键值对列表转换为对象
const obj = Object.fromEntries(entries);
console.log(obj); // { name: 'John', age: 30, city: 'New York' }
String.prototype.trimStart()和String.prototype.trimEnd()
这两个方法用于去除字符串开头或结尾的空白字符。它们分别是trim()方法的单独扩展。
格式化数字
引入了新的Number.prototype.toFixed()方法,它允许指定小数点后的位数并将数字四舍五入为指定精度;而Intl.NumberFormat对象提供了更灵活和本地化的数字格式化。
动态导入
通过import()函数,可以在运行时动态地导入模块。这使得按需加载模块变得更加容易。
// 动态导入模块
import('./module.js')
.then(module => {
// 使用导入的模块
module.doSomething();
})
.catch(error => {
console.error('模块加载失败:', error);
});
可选的catch绑定
现在可以在try-catch语句中省略catch块中的绑定,只使用catch {},而不会将错误绑定到变量。
try {
// 执行可能抛出异常的代码
throw new Error('发生了错误');
} catch {
// 省略 catch 块中的绑定
console.log('捕获到错误');
}
BigInt
引入了一种新的基本数据类型 BigInt,它可以表示任意精度的整数。使用后缀n来声明一个BigInt。
const bigNumber = BigInt("123456789012345678901234567890");
console.log(bigNumber); // 123456789012345678901234567890n
console.log(typeof bigNumber); // "bigint"
const added = bigNumber + 1n;
console.log(added); // 123456789012345678901234567891n
globalThis
引入了一个名为globalThis的全局属性,它始终指向全局对象,无论在什么环境下。
// 在浏览器控制台和 Node.js 中使用 globalThis
console.log(globalThis);
// 在浏览器全局作用域中声明变量
globalThis.myVariable = "Hello World";
console.log(myVariable); // "Hello World"
这些是ES10中的一些主要特性。它们提供了更方便、更强大的语言功能,使JavaScript开发人员能够更高效地编写代码。