过去几年每次 ECMAScript 发布新版本。
评论区都会出现一句话:JavaScript 又更新了,但我每天还是在写 const。
很多开发者甚至觉得:ES6 之后,JavaScript 已经没有什么值得关注的新特性了。
但就在最近,ECMAScript 2026(ES2026)规范正式获批。
这是 JavaScript 最新一代语言标准。
除了一个仍在落地中的 Math.sumPrecise() 外,其余核心特性已经陆续在 Node.js 中可以使用。
这意味着:未来几年,**浏览器、Node.js、Deno、Bun......**都会逐步全面进入 ES2026 时代。
ES2026 正式来了
很多人一直有个误区:
text
JavaScript = Chrome
其实不是,真正决定 JavaScript 长什么样的一直都是:ECMAScript(ECMA-262)语言规范。
今年,ECMA 国际正式批准了:
ECMAScript® 2026 Language Specification(第 17 版)
它成为 JavaScript 最新官方标准。也就是说以后你看到:ES2026 其实就是:JavaScript 最新标准
JavaScript 终于开始补齐细节
过去几年,TC39 的思路已经发生变化,不再疯狂增加各种新语法。
而是:
text
让 JavaScript 更稳定
更一致
更现代
所以 ES2026 没有像 ES6 那样一次加入:
- class
- Promise
- let / const
- Arrow Function
这种革命性能力。
更多的是:把开发体验继续打磨。
这几个新特性最值得关注
如果你平时写 Node、React、Vue。下面这些能力,几乎都会遇到。
1. Array.fromAsync:异步迭代器的终结者
过去,将异步迭代器(Async Iterator)转换为数组,我们只能使用 for await...of 循环,代码略显冗长。ES2026 引入了 Array.fromAsync,填补了这一空白,让异步数据收集变得和同步一样简单。
过去
javascript
async function* asyncGen() {
yield 1;
yield 2;
}
const arr = [];
for await (const n of asyncGen()) {
arr.push(n);
}
console.log(arr); // [1, 2]
现在 (ES2026)
javascript
async function* asyncGen() {
yield 1;
yield 2;
}
const arr = await Array.fromAsync(asyncGen());
console.log(arr); // [1, 2]
2. Error.isError:更安全的错误检查
instanceof Error 在跨上下文(如 iframe)或处理非标准错误对象时会失效。新的 Error.isError() 提供了一个更可靠的检查方式。
javascript
try {
throw new Error("Oops");
} catch (e) {
console.log(Error.isError(e)); // true
}
try {
throw "Just a string";
} catch (e) {
console.log(Error.isError(e)); // false
}
3. Math.sumPrecise:告别浮点数精度陷阱
这是本次更新最受期待的特性之一。JavaScript 的浮点数计算精度问题(如 0.1 + 0.2 !== 0.3)困扰了开发者多年。Math.sumPrecise 旨在解决这个问题,提供更精确的求和能力。
过去
javascript
const values = [1e20, 0.1, -1e20];
const sum = values.reduce((a, b) => a + b, 0);
console.log(sum); // 0 (精度丢失)
现在 (ES2026)
javascript
const values = [1e20, 0.1, -1e20];
const sum = Math.sumPrecise(values);
console.log(sum); // 0.1 (精度正确)
4. Uint8Array 原生支持 Base64 和 Hex 编码
不再需要依赖 buffer 或第三方库,Uint8Array 现在可以直接进行 Base64 和十六进制(Hex)的编解码,极大地简化了二进制数据处理。
javascript
const data = new Uint8Array([69, 83, 50, 48, 50, 54]); // ES2026
// 编码
const base64 = data.toBase64(); // 'RVMyMDI2'
const hex = data.toHex(); // '455332303236'
// 解码
const decoded = Uint8Array.fromBase64(base64);
console.log(new TextDecoder().decode(decoded)); // "ES2026"
5. Iterator.concat:优雅的迭代器合并
以前合并多个迭代器需要手写生成器函数,现在可以直接使用 Iterator.concat,代码更加简洁直观。
javascript
const i1 = Iterator.from([2022, 2023]);
const i2 = Iterator.from([2025, 2026]);
// 现在 (ES2026)
const combined = Iterator.concat(i1, [2024], i2);
console.log(Array.from(combined)); // [2022, 2023, 2024, 2025, 2026]
6. JSON.parse 源文本访问:解决大数和 BigInt 序列化问题
JSON.parse 在解析超大数字时会丢失精度,JSON.stringify 也无法处理 BigInt。ES2026 通过为 parse 的 reviver 函数和 stringify 的 replacer 函数提供新能力,解决了这两个痛点。
解析大数
javascript
const jsonStr = "999999999999999999";
// 通过第三个参数 { source } 获取原始字符串
const bigIntValue = JSON.parse(jsonStr, (key, value, { source }) => BigInt(source));
console.log(bigIntValue); // 999999999999999999n
序列化 BigInt
javascript
const bigIntValue = 9999999999999999n;
// 使用 JSON.rawJSON 包装
const jsonStr = JSON.stringify(bigIntValue, (key, value) => JSON.rawJSON(value));
console.log(jsonStr); // 9999999999999999
7. Map.prototype.getOrInsert:简化 Map 的 Upsert 操作
这是一个极其实用的便利方法,它允许我们在获取 Map 中值的同时,如果键不存在则插入一个默认值,省去了 has 和 set 的样板代码。
javascript
const settings = new Map();
settings.set("language", "en");
// 如果 "theme" 不存在,则插入 "dark" 并返回它
console.log(settings.getOrInsert("theme", "dark")); // "dark"
// 如果 "language" 已存在,则直接返回其值,不进行插入
console.log(settings.getOrInsert("language", "pl")); // "en"
Node、Deno、Bun 基本都在跟进
很多人以前觉得:
text
ES 更新
浏览器半年后支持
现在完全不同。
Node、Deno、Bun 几乎都会第一时间跟进 ECMAScript 新标准。
所以很多 ES2026 特性其实已经可以直接体验,对于现代 JavaScript 开发者来说升级速度比以前快得多。
TC39 才是真正推动 JavaScript 的幕后英雄
很多开发者知道:Chrome、Node、V8 却不知道真正决定 JavaScript 未来方向的是:TC39。
所有语言新特性都会经历:
text
Stage 0
↓
Stage 1
↓
Stage 2
↓
Stage 3
↓
Stage 4
↓
进入 ECMAScript
只有走完整个流程才会正式进入标准。也就是说今天你看到的:
javascript
Promise
Optional Chaining
Pipeline(未来)
Temporal(未来)
几乎都来自 TC39。
为什么 ES2026 更值得关注?
很多人会说: 没有 ES6 那么震撼。
其实这正说明:JavaScript 已经进入成熟阶段。
过去它疯狂加新语法。
今天它更关注:
- 一致性
- 性能
- 工程化
- 开发体验
这也是为什么:React、Vue、Next.js、Vite、Node 这些现代工具更新越来越稳定。
写在最后
十年前 JavaScript 每一次升级。
都意味着:"大量破坏性变化"
而今天 ES2026 更像一次:润物细无声的升级。
没有特别炸裂的新语法,却不断完善:
- 集合操作
- Iterator
- Promise
- JSON Modules
- 数学能力
- 工程化体验
JavaScript 没有停下进化,只是从"革命" 变成了"持续打磨"。
对于每一个前端、Node.js 开发者来说,ES2026 值得花半小时认真了解一次。因为未来几年,它就是整个 JavaScript 世界的新基础。
ECMAScript 2026 规范:262.ecma-international.org/17.0/index....
TC39 Proposals:github.com/tc39/propos...
ECMAScript 2026 新特性汇总:pawelgrzybek.com/whats-new-i...
哪个新特性值得你期待呢?评论区聊聊~
各位互联网搭子,要是这篇文章成功引起了你的注意,别犹豫,关注、点赞、评论、分享走一波,让我们把这份默契延续下去,一起在知识的海洋里乘风破浪!