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 中值的同时,如果键不存在则插入一个默认值,省去了 hasset 的样板代码。

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...

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


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

相关推荐
光影少年1 小时前
react navite 页面跳转、传参、路由监听、导航栏自定义
前端·react native·react.js
黑土豆1 小时前
CSS 新特性:Container Queries 到底能解决什么痛点?
前端·css
问商十三载2 小时前
2026法律行业AI引擎生成式优化怎么优化?三层专业加固提排名,零成本提33%引用率附适配表
java·前端·人工智能·算法
恋猫de小郭2 小时前
Flutter 3D 渲染的全新选择和应用场景
android·前端·flutter
IT_陈寒2 小时前
Java线程池踩了个坑,任务居然默默消失了
前端·人工智能·后端
程序员爱钓鱼2 小时前
配置 GoLand 与 VS Code 开发环境
前端·后端·go
程序员爱钓鱼2 小时前
Rust Vec 动态数组详解:创建、增删、遍历与排序
前端·后端·rust
LaughingZhu3 小时前
Product Hunt 每日热榜 | 2026-07-23
前端·神经网络·react.js·搜索引擎·前端框架
自然 醒3 小时前
记录We码开发者工具的一个bug
前端·javascript·bug