Skip to content

ECMAScript 2024

ECMAScript 2024(ES15)于 2024 年 6 月发布。

核心特性

1. Promise.withResolvers()

异步控制增强,允许直接创建 Promise 并获取其 resolvereject 函数,适用于需要手动控制异步结果的场景。

javascript
const { promise, resolve } = Promise.withResolvers();
setTimeout(() => resolve("操作成功"), 1000);
await promise; // 输出:"操作成功"

2. 数据分组方法

Object.groupBy()Map.groupBy()

按条件对数组元素分组,返回普通对象或 Map 对象,简化数据聚合逻辑。

javascript
const users = [
  { name: "Alice", role: "admin" },
  { name: "Bob", role: "user" },
];
const grouped = Object.groupBy(users, (user) => user.role);
// 输出:{ admin: [Alice...], user: [Bob...] }

场景:数据聚合、分类统计。

注意:Object.groupBy 返回无原型的对象,无法调用 hasOwnProperty 等方法。

3. 正则表达式 v 标志

增强 Unicode 支持,支持集合操作(差集 --交集 &&)和多节点字符匹配。

javascript
const re = /[\p{Letter}&&\p{ASCII}]+/v;
re.test("Hello"); // true(仅匹配 ASCII 字母)

4. 字符串格式校验与修复

检测并修复无效 Unicode 字符。

  • String.prototype.isWellFormed():检测字符串是否有效。
  • String.prototype.toWellFormed():将无效字符替换为 �(U+FFFD)。
javascript
const str = "Hello\uD800World";
str.isWellFormed(); // false
str.toWellFormed(); // "Hello�World"

5. ArrayBuffer 动态调整与转移

优化二进制数据处理性能。用于音视频处理、WebAssembly 交互。

  • resize():动态调整缓冲区大小(需预定义 maxByteLength)。
  • transfer():零拷贝转移所有权,提升大内存操作效率。
javascript
const buffer = new ArrayBuffer(8, { maxByteLength: 16 });
buffer.resize(12); // 扩容至 12 字节
const newBuffer = buffer.transfer(); // 原 buffer 分离

6. Atomics.waitAsync()

异步共享内存等待,非阻塞等待 SharedArrayBuffer 的值变化,避免主线程冻结。

javascript
const sab = new SharedArrayBuffer(1024);
const int32 = new Int32Array(sab);
const { promise } = Atomics.waitAsync(int32, 0, 0);
Atomics.notify(int32, 0); // 触发解决
await promise;

场景:多线程协作(Web Worker)、高性能计算。

7. 顶层 await

允许在模块顶层直接使用 await,简化异步初始化逻辑。

javascript
// 模块中直接使用
const data = await fetchData();
export default data;

8. Hashbang 语法标准化

支持在脚本文件首行使用 #!/usr/bin/env node,兼容 Node.js 直接执行。

javascript
#!/usr/bin/env node
console.log("Hello World");

兼容性

Chrome 127+
Firefox 128+
Safari 18.0+
Edge 127+
Node 21.0+

注:兼容性数据可能随着版本的更新而有所调整,建议开发者根据项目的具体需求参考最新的浏览器版本和 Polyfill 支持情况。

总结

ES2024 聚焦于 异步控制、数据处理 和 内存优化。

参考文献

ECMA-262 2024 规范 👉

Released under the MIT License.