以下是 ECMAScript 2019(ES10) 的总结,用你之前喜欢的格式「概览 → 新特性一览 → 总结」:
🧩 一、总体概览
ECMAScript 2019(ES10)在 2019 年 6 月发布。 本次更新聚焦在补齐日常开发中的“缺少的小工具”,让对象、数组、字符串处理更顺滑,也补强 JSON 与排序等底层行为的一致性。 整体走向是“把社区常用的 polyfill 与最佳实践写进标准”,降低跨平台兼容成本。
🚀 二、主要新特性一览
[1, [2, [3]]].flat(2); // [1, 2, 3]
[1, 2, 3].flatMap(x => [x, x * 2]); // [1, 2, 2, 4, 3, 6]
简化数组拍平与映射的组合写法,尤其适合处理嵌套列表、树状数据。
const pairs = new Map([['name', 'ES10'], ['year', 2019]]);
Object.fromEntries(pairs); // { name: 'ES10', year: 2019 }
提供与 Object.entries() 相反的转换,提高 Map / URLSearchParams 与普通对象之间的互操作性。
' hello '.trimStart(); // 'hello '
' hello '.trimEnd(); // ' hello'
让去除字符串前后空白更加语义化,避免手写正则或重复调用 trim()。
try {
doSomething();
} catch {
recover();
}
当错误对象不会被使用时可省略 catch(error) 形参,使异步/同步错误处理更简洁。
const tag = Symbol('loader');
tag.description; // 'loader'
为调试与日志提供统一的符号描述读取方式,避免访问 Symbol#toString() 的兼容差异。
JSON.stringify('\u2028'); // "\u2028"
修复某些 Unicode 分隔符导致的无效 JSON,利于日志聚合与跨语言解析。
eval('"line\u2028break"'); // 旧环境错误,ES10 起合法
确保 JavaScript 解析器接受 JSON 中的 U+2028/U+2029,保持与 JSON 规范一致。
[{ n: 1, id: 'a' }, { n: 1, id: 'b' }].sort((a, b) => a.n - b.n);
// 顺序保持为 a, b
明确规定排序算法必须稳定,避免不同引擎下对等关键字排序顺序不一致。
🧠 三、总结 类型 代表特性 影响 数组操作 flat(), flatMap() 减少手写递归或二次遍历 对象互转 Object.fromEntries() Map/entries 互转一步到位 字符串处理 trimStart()/trimEnd() 常规清洗字符串更语义化 错误处理 可选 catch 绑定 控制流语法更精炼 规范一致 JSON 修复、稳定排序、Symbol 描述 提升调试与跨平台兼容性
📌 整体意义: ECMAScript 2019 把“社区普遍 Polyfill”纳入标准库,让现代 JavaScript 写法开箱即用。 它兼顾工程团队日常的对象/数组转换,又照顾底层规范的一致性,为后续的大型特性铺路。