ECMAScript 2019(ES10)
2025-02-20 20:00
2025-02-22 18:30
核心特性
1. flat() 与 flatMap()
新增了数组扁平化方法
Array.prototype.flat(depth)
将嵌套数组“拉平”,depth 指定展开深度(默认 1)
const arr = [1, [2, [3]]];
console.log(arr.flat()); // [1, 2, [3]](默认展开一层)
console.log(arr.flat(2)); // [1, 2, 3]
Array.prototype.flatMap(func)
先对每个元素执行映射函数,再将结果数组展开一层(等价于 map() + flat(1))。
const arr = [1, 2, 3];
const result = arr.flatMap(x => [x * 2]); // [2, 4, 6]
2. Object.fromEntries() 方法
Object.fromEntries()
将键值对列表(如 Array 或 Map)转换为对象,是 Object.entries() 的逆操作。常用于处理 URL 查询参数、转换 Map 为对象。
const entries = [
["name", "xlei"],
["age", 23]
];
const obj = Object.fromEntries(entries); // { name: 'xlei', age: 23 }
3. trimStart() 与 trimEnd()
trimStart()
和 trimEnd()
去除字符串开头(trimStart)或结尾(trimEnd)的空白字符,别名分别为 trimLeft() 和 trimRight()。
const str = " Hello ";
console.log(str.trimStart()); // 'Hello '
console.log(str.trimEnd()); // ' Hello'
4. 可选的 catch 绑定
try...catch
语句现在可以省略 catch 绑定,直接使用 catch 块来处理错误。
try {
JSON.parse(invalidData);
} catch {
// 无需定义 error 参数
console.log("解析失败");
}
5. Symbol.prototype.description
直接访问 Symbol 的描述文本,替代手动解析 toString()。
const sym = Symbol("foo");
console.log(sym.description); // "foo"
6. String.prototype.matchAll()
返回正则表达式匹配的所有结果(包括捕获组),返回值为迭代,避免循环中重复调用 exec()。
const str = "test1test2";
const regex = /t(e)(st(\d?))/g;
const matches = [...str.matchAll(regex)];
console.log(matches[0]); // ['test1', 'e', 'st1', '1', ...]
总结
ES10 通过一系列务实改进(如数组扁平化、字符串修剪、可选的 catch 绑定),显著提升了代码的简洁性和可维护性。其特性广泛应用于数据处理(如 API 响应格式化)、工具库开发(如配置解析)及日常字符串操作,进一步巩固了 JavaScript 在现代开发中的实用性。后续版本(如 ES2020 的动态导入 import())延续了这一精细化优化的方向。
评论区
评论区寄了
文章目录
核心特性
1. flat() 与 flatMap()
2. Object.fromEntries() 方法
3. trimStart() 与 trimEnd()
4. 可选的 catch 绑定
5. Symbol.prototype.description
6. String.prototype.matchAll()
总结