JavaScript高级程序设计笔记 29
附录 A ES2018 和 ES2019
核心脉络
附录 A 总结 ECMAScript 2018 和 2019 的新增能力,重点包括异步迭代、对象剩余/扩展属性、Promise 改进、正则增强、数组扁平化和一些小语法改进。
重点内容
异步迭代
异步可迭代对象实现 Symbol.asyncIterator,可通过 for await...of 消费。
for await (const chunk of stream) {
console.log(chunk);
}
适合流式数据、分页请求、异步事件队列。
对象剩余与扩展
const { a, ...rest } = obj;
const copy = { ...obj, b: 2 };
常用于对象浅拷贝和拆分属性。
Promise.prototype.finally
fetch("/api")
.finally(() => {
loading = false;
});
适合无论成功失败都要执行的清理逻辑。
正则增强
包括命名捕获组、反向断言、dotAll 等。
const re = /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/;
const result = re.exec("2026-06-01");
console.log(result.groups.year);
Array flat 与 flatMap
[1, [2, [3]]].flat(2);
[1, 2, 3].flatMap((n) => [n, n * 2]);
Object.fromEntries
Object.fromEntries([
["name", "Alice"],
["age", 20],
]);
常与 Object.entries()、Map 配合。
可选 catch 绑定
try {
risky();
} catch {
console.log("failed");
}
面试重点
for await...of用于异步迭代。- 对象扩展是浅拷贝。
finally不接收成功值或失败原因作为主要用途,它常用于清理。flat()可按深度打平数组。
复习清单
一句话总结
附录 A 的核心是 ES2018/ES2019 对异步、对象、正则、数组和 Promise 的补强,让现代 JavaScript 表达力更完整。

浙公网安备 33010602011771号