写八年JS,我发现ES2026把三个常用工具函数悄悄原生化了——这件事把精度计算、迭代器处理、异步数据流的账全变了
写过八年 JS,每次 ECMAScript 发新版本我都只挑几个用得上的记。但 ES2026 这一版不太一样——大部分改动根本不需要你主动去用,浏览器自己就帮你搞定了。
比如高精度求和,以前要靠第三方库处理金额计算,现在浏览器自己会算。迭代器合并,以前要手写循环拼,现在一行代码搞定。异步数组构建,以前要 Promise.all 套来套去,现在一个 fromAsync 全包了。
我把这些变化分了两类:需要你主动换的和悄悄就能用的。主动换的不多,悄悄用的占大多数。
悄悄就能用的:这些不用改代码
Math.sumPrecise:高精度求和终于原生了
金融场景里,浮点数累加精度丢失的问题存在了快十年。以前要么引入 decimal.js,要么自己写大数处理。
ES2026 给了 Math.sumPrecise:
// 以前:精度丢失
const sum = 0.1 + 0.2 + 0.3; // 0.6000000000000001
// 现在:浏览器帮你算准
const precise = Math.sumPrecise([0.1, 0.2, 0.3]); // 0.6
Chrome 129 已支持。这个不需要你迁移任何代码,浏览器原生提供,你直接用就行。
Iterator.concat:多个迭代器一键合并
数据处理时经常遇到「这个 API 返回迭代器,那个也返回迭代器,我要串起来用」的场景。以前要写个循环或者用第三方库:
// 以前:手写合并逻辑
function* concat(iter1, iter2) {
yield* iter1;
yield* iter2;
}
// 现在:一行搞定
const combined = Iterator.concat([iter1, iter2, iter3]);
这个也不需要你主动升级,发现手头有类似拼接迭代器的代码,直接换成这个就行。
Array.fromAsync:异步数据源直接进数组
fetch 返回的流、ReadableStream、Generator——这些异步可迭代对象,以前要手动转数组:
// 以前:Promise.all 套多层
const data = await Promise.all([
fetch('/api/1').then(r => r.json()),
fetch('/api/2').then(r => r.json()),
]);
// 现在:直接丢进去
const data = await Array.fromAsync(fetch水流);
这个在处理批量接口时特别有用,代码从三层嵌套变成一层。
Error.isError:终于能准确识别错误对象了
// 以前:靠 constructor.name 或者 instanceof 判断
if (err.constructor.name === 'Error') { ... }
// 现在:原生方法
if (Error.isError(err)) { ... }
这个看起来简单,但以前判断「某个值是不是 Error 对象」其实没有统一标准,不同执行环境表现还不一样。现在有标准方法了。
需要你主动换的:这两个值得改
Map.prototype.getOrDefault:键不存在时返回默认值
// 以前:手动判断
const val = map.has(key) ? map.get(key) : defaultValue;
// 现在:一步到位
const val = map.getOrDefault(key, defaultValue);
值不值得改?看你的代码里有多少 has + get 的模式。如果大量存在,换过去代码清爽很多。
JSON.parse reviver 新参数:能拿到原始匹配片段了
// 以前:reviver 只能拿到当前路径
JSON.parse(text, (key, value) => {
// 拿不到原始文本片段
});
// 现在:能拿到原始片段了
JSON.parse(text, {
reviver: (key, value, context) => {
// context.raw 拿到了 JSON 源文本中的匹配片段
}
});
做序列化库或者需要精细化解析的场景,这个很有用。普通业务代码里可能用不上。
迁移建议:什么都不用做,但要知道自己少了多少债
ES2026 这批更新,大多数不需要你改代码。新项目直接用就行,老项目如果没有相关场景也不需要急着动。
值得做一件事:扫一遍代码库里有没有自己写的「高精度求和」「迭代器合并」「异步数组构建」工具函数。有的话,标记为「可删除」——浏览器的原生实现比你自己写的更稳定、更快,还省依赖。
ES2026 这版的主题就一个:浏览器帮你干活,你退到一边看着就行。
评论区
登录后可评论。