以下是 ECMAScript 2021(ES12) 的总结,继续沿用「概览 → 新特性一览 → 总结」结构:
🧩 一、总体概览
ECMAScript 2021(ES12)在 2021 年 6 月正式发布。 这一版围绕“让常用写法更直觉”展开:补强逻辑赋值语法、增强字符串与 Promise 能力,并首次把 WeakRef 等底层能力纳入标准。 焦点在于提升日常开发便利性,同时为内存敏感场景提供新的控制手段。
🚀 二、主要新特性一览
user.displayName ||= 'Guest';
config.cacheEnabled &&= isProd;
options.timeout ??= 5000;
把布尔逻辑与赋值合并,避免写重复的 if 语句或手动展开。
const budget = 1_250_000;
const mask = 0b1010_0101;
允许在数字字面量中插入下划线,提高大型数字、二进制/十六进制常量的可读性。
'2021-06-01'.replaceAll('-', '/'); // '2021/06/01'
一次性替换所有匹配项,无需构造带全局标志的正则,在 URL、模板清洗等场景更直观。
const fastest = await Promise.any(tasks);
Promise.any() 返回首个 fulfil 的结果,失败时抛出 AggregateError,适合“取最快成功结果”的并行策略。
const registry = new FinalizationRegistry(token => cleanup(token));
registry.register(obj, meta);
const weak = new WeakRef(obj);
为高级缓存、跨环境资源绑定提供弱引用与终结回调,需谨慎使用以避免不可预测调度。
🧠 三、总结 类型 代表特性 影响 语法糖 逻辑赋值、数字分隔符 常见赋值/常量写法更简洁易读 字符串处理 replaceAll() 替换操作无需手写全局正则 异步流程 Promise.any() 并发策略更灵活,聚合错误更具语义 内存管理 WeakRef、FinalizationRegistry 少量场景可对 GC 做精细协作
📌 整体意义: ECMAScript 2021 把“一直存在的习惯用法”写进语言,又开启了弱引用时代。 开发者在日常业务上得到更顺手的语法;同时也提醒大家谨慎对待底层内存 API,结合工具/监控确保行为可预期。