JavaScript 终于又进化了!ES2026 正式发布,这些新特性你必须知道!

过去几年每次 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...

哪个新特性值得你期待呢?评论区聊聊~


各位互联网搭子,要是这篇文章成功引起了你的注意,别犹豫,关注、点赞、评论、分享走一波,让我们把这份默契延续下去,一起在知识的海洋里乘风破浪!

相关推荐
ShineWinsu29 分钟前
对于CSS:弹性布局(Flexbox)的解析
前端·css·面试·浏览器·web·网页·弹性布局
山雀~32 分钟前
第5次百日救赎计划
前端
xiaogai_gai40 分钟前
销售出库单同步实战:旺店通→金蝶云星空的单一策略深度拆解
大数据·前端·数据库
const_qiu40 分钟前
第二章 2.6:初始化 NestJS 服务端 —— TypeScript 后端框架体验
前端·javascript·typescript
console.log('npc')2 小时前
[特殊字符] AI Agent 工作台前端实战教程 · 新手入门指南
前端·人工智能
gCode Teacher 格码致知2 小时前
前端教学2:ul标签的应用场合与经典案例
前端
const_qiu2 小时前
第 2.5 章 2.5.6:前端登录、Token 无感续签与路由守卫
java·前端·人工智能·状态模式
用户83134859306982 小时前
Vue3 事件:常用用法与开发高频坑点
前端·javascript·vue.js
weixin_446260852 小时前
ReAct‑Evolve:基于轨迹反馈的ReAct智能体自主提示演化系统
前端·react.js·前端框架