ECMAScript(简称 ES)作为 JavaScript 的标准,每年都会推出新的特性,不断优化我们的开发体验,分享几个实用的新特性。
1. Temporal API - 现代化的日期时间处理
Temporal API 提供了更直观和不可变的日期时间操作方式。它解决了传统 Date API 的许多问题,比如更容易处理时区、更清晰的方法名称,以及更可预测的行为。
2. 数组分组操作 - Object.groupBy 和 Map.groupBy
这个新特性极大简化了数据分组操作。Object.groupBy 返回普通对象,而 Map.groupBy 返回 Map 实例。它们都接受一个回调函数来决定分组的键,避免了手动实现分组逻辑。
3. RegExp match indices
直接返回索引位置,无需再处理匹配结果。
4. Atomics.waitAsync - 异步等待
waitAsync 提供了一种非阻塞方式来等待共享内存的变化,避免了手动实现轮询逻辑,更适合在现代 Web Workers 中使用。
5. ArrayBuffer.prototype.transfer - 高效内存转移
transfer() 方法提供了零拷贝方式转移 ArrayBuffer 的所有权,原buffer会被置为0长度。这在处理大型二进制数据时特别有用,可以显著提高性能。
6. 结构化错误堆栈 - Error.prototype.cause
新的错误处理方式支持结构化堆栈信息,使错误追踪和调试更容易。通过 cause 属性可以保留完整的错误链,structured: true 提供更详细的堆栈信息。
7. 弱引用集合方法改进
新增的 cleanup() 方法允许显式触发垃圾回收,避免内存泄露。
8. Promise.withResolvers() - 简化 Promise 创建
withResolvers() 让我们在一行代码中同时获取 promise 及其控制函数,避免了使用闭包来获取 resolve 和 reject 函数的复杂写法。特别适合需要在外部控制 Promise 状态的场景。