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 表达力更完整。

posted @ 2024-05-20 16:31  Li_pk  阅读(6)  评论(0)    收藏  举报