惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 叶小钗
O
OpenAI News
V
V2EX
大猫的无限游戏
大猫的无限游戏
博客园 - 聂微东
S
Schneier on Security
C
CXSECURITY Database RSS Feed - CXSecurity.com
小众软件
小众软件
L
LINUX DO - 热门话题
C
Cybersecurity and Infrastructure Security Agency CISA
博客园 - Franky
Security Latest
Security Latest
S
SegmentFault 最新的问题
Project Zero
Project Zero
Spread Privacy
Spread Privacy
K
Kaspersky official blog
J
Java Code Geeks
V
Vulnerabilities – Threatpost
C
Cisco Blogs
C
CERT Recently Published Vulnerability Notes
月光博客
月光博客
T
The Exploit Database - CXSecurity.com
L
Lohrmann on Cybersecurity
人人都是产品经理
人人都是产品经理
博客园 - 三生石上(FineUI控件)
Scott Helme
Scott Helme
WordPress大学
WordPress大学
量子位
T
Threat Research - Cisco Blogs
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
宝玉的分享
宝玉的分享
Hugging Face - Blog
Hugging Face - Blog
AWS News Blog
AWS News Blog
Help Net Security
Help Net Security
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Simon Willison's Weblog
Simon Willison's Weblog
S
Secure Thoughts
博客园 - 【当耐特】
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
V
Visual Studio Blog
Last Week in AI
Last Week in AI
T
Tailwind CSS Blog
腾讯CDC
Cyberwarzone
Cyberwarzone
IT之家
IT之家
GbyAI
GbyAI
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
云风的 BLOG
云风的 BLOG
T
Troy Hunt's Blog
D
Docker

码云笔记

Pinia v4 发布:Vue 状态管理进入新时代 Linux LVM:故障排查与数据恢复指南 Java中wait()与sleep()方法的不同点是什么? Bonsai27B 重磅落地!27B 大模型实现手机本地运行 高德重磅上线 ABot‑World Studio,消费级显卡就能搭建专属 3D 虚拟世界 Java中final、finally和finalize的区别是什么? 怎么修改Ollama及其模型的默认路径?Ollama路径修改、迁移与重启的操作教程 iOS27 公开测试版正式上线!AI Siri 与液态玻璃成最大看点 Yuku正式发布!比 Vite+ 快 5.4 倍的前端工具链 Linux lsof 命令详解:进程与文件监控实战 Claude Code CLI命令手册 代码审查重构Bug修复场景化工作流 OpenClaw中连接并使用本地Ollama模型的操作教程 GPT-5.6 今天正式上线:OpenAI 掏出”太阳系”全家桶,Sol / Terra / Luna 齐发,打的却是一张”效率牌” Nacos MySQL持久化部署完整教程 GPT-5.6系列正式上线:OpenAI以效能与性价比重塑AI行业竞争格局 Java中序列化与反序列化的概念是什么? 如何在HTML中实现字体颜色根据背景自动变化? JDK动态代理与CGLIB动态代理的区别是什么? OpenClaw数据加密敏感信息保护的完整教程 砸超亿美元算力!亚马逊秘密启动Moonraker项目,Alexa迎来颠覆性升级 PHP 最轻量、结构化 .docx 到 Markdown 转换器 Elephant TypeScript 7.0 正式发布 蚂蚁灵波开源全球首款 MoE 具身视频大模型 LingBot-Video,为机器人世界模型搭建新底座 SpaceX AI联合Cursor推出Grok 4.5 搅动专业AI赛道格局 英伟达Vera CPU落地商用,改写AI代理时代算力竞争规则 什么是端点检测与响应(EDR)以及它的工作原理介绍 Anime.js 已经 10 岁了!作者查出脑瘤,V5 将开始收费! 星链开启全面升级!SpaceX申请十万颗卫星,构建AI时代全球天基基建 PHP 通用表达式语言 CEL-PHP 2.0.0 正式发布! WordPress 7.0 下载,支持AI建站 Docker Desktop(windows)版本下载 详解 Linux 端口监听检查工具:ss、netstat、lsof 京东 JoyAI 上线 UGC 数字人功能,普通人一键打造专属虚拟分身 Java中Integer缓存池的作用是什么? 应对劳动力短缺 日本加码布局AI机器人产业,2040年拟千万台机器人落地各行各业 Java中深拷贝与浅拷贝的区别是什么? Claude旗舰模型收费规则大变:订阅权益取消,转为按量计费 MySQL中的分布式架构和复制策略 如何在 MySQL 中处理 BLOB 和 CLOB 数据类型? 如何在 MySQL 中处理和优化长时间运行的查询? git提交信息分别用什么icon好? Composer安装与配置教程 35岁华为员工偷偷面试,被面试官嘲讽:你是被淘汰的吧?他的回怼让面试官当场闭嘴 谷歌Nano Banana 2 Lite正式上线:4秒极速出图,大幅降低AI生图成本 锐捷交换机运维配置完全参考手册 Vue 3.5:Effect Scope 与响应式污染隔离机制 IS-IS协议基本概念、工作原理与扩展应用 美团LongCat-2.0重磅开源!国产万亿参数大模型解锁超长上下文新能力 LangChain4j 和 LangGraph4j 区别是什么?哪个更好? Claude Code 的聊天和配置可以一键搬进 Codex 了 码云笔记详解Markdown格式兼容性、图片显示失效与同步冲突解决 python实现自动爬取某论坛帖子并导出到Word文档的实战教程 高德低调内测 AI 零代码工具“袋马”,切入小微商家轻量化应用开发赛道 一文看懂OSPF:基础概念、工作原理和应用场景 PHP (Yii2) 接入企业级 SSO 单点登录实战教程 Google终于支持修改Gmail邮箱了?实测告诉你哪些能改,哪些不能改!(附详细教程+FAQ) UCloud 4.6 元 / 月服务器是真的吗? 2026 云服务器完整选购攻略 Webiny:无服务器应用程序框架 Fyrox:现代化的 Rust 游戏引擎 千问发布全球首个原生语言世界模型Qwen-AgentWorld,AI智能体迈入全环境实操新时代 火山引擎上新豆包音频生成模型1.0,AI音频生成实现一键全流程创作 使用Claude Code经常遇到的10个问题 如何批量清理wordpress所有文章和标签,保留设置,保留分类? 谷歌 NotebookLM 内测文献综述矩阵工具,Gemini3.5 赋能 AI 学术结构化研究 京东开源JoyAI-VL-Interaction模型 解锁AI实时视频视觉交互新形态 破解中小商家海报设计难题!MeiGen-AI开源闭环AI设计方案落地 详解Bash set 命令:set -e、set -x 和 set -u 完全指南 Node Plus ?比 pnpm 快 24 倍! Plan-Execute-Replan 和 ReAct 的区别是什么? Anthropic最新报告揭秘:AI编程人机协作成开发者主流工作模式 详解PostgreSQL 18 逻辑复制冲突检测与解决方法 JDK动态代理与CGLIB动态代理的区别是什么? 详解 Linux 中 localhost、127.0.0.1 与 Loopback(回环地址) OpenAI Codex新手入门教程 安装配置AGENTS.md与MCP全流程详解 程序员必备AGENTS.md配置指南 规避AI编码修改乱象 使用 Codex 必装的 12 个插件,你值得拥有! macOS AI CLI工具安装与避坑指南 OpenClaw Gemini Claude报错全套解决方案 智谱AI正式开源GLM-5. 2 模型:主打1M无损上下文与长程代码任务 小米 MiMo Claw 正式版上线 轻量化 Agent 打通金山办公生态 如何定义 Vue 的动态路由?如何获取传过来的动态参数? 记录Claude Code Router 接入过程遇到问题及解决方法 千问AI眼镜凭硬核实力领跑2026智能穿戴赛道 程序员特有的习惯你占了几条! 郝景芳新作半数内容由AI创作,文坛郝景芳AI写作争议再起 使用 iftop、nload、bmon、vnstat 监控 Linux 网络带宽 现代富文本编辑器为什么最终都会抛弃 DOM? Vue 的 v-cloak 和 v-pre 指令有什么作用? 去哪里买抖音号?抖音小号在线购买-抖音小号出售批发 实名闲鱼小号出售|闲鱼账号批发|咸鱼发布账号|出售闲鱼发布账号 zfb号购买-支付宝小号购买-实名支付宝购买号-企业支付宝购买-支付宝小号批发 个人支付宝实名账号出售|v2/v3支付宝账号出售|实名支付宝小号购买 闲鱼账号哪里有卖-闲鱼实名账号购买的途径 Java注解的实现原理是什么? Agentation MemPalace 《置身钉内》之好词好句好段摘抄 AI有声书革命!万象有声全自动生产线,7元/万字颠覆网文有声化行业 详解CentOS 7跨版本迁移Rocky Linux9 生产环境安全升级教程 Java中序列化与反序列化的含义是什么? 18. Python 标准库之 Json 模块
ES2026 第 17 版新增的 5 个新特性
庞博 普通 · 2026-07-15 · via 码云笔记

AI 概述

ES2026并未推出颠覆性功能,而是针对前端开发痛点补齐短板。新增Error.is‑Error解决跨环境错误判断问题;Math.sumPrecise规避浮点数求和精度缺陷;Map新增getOrInsert精简键值判断代码;Array.fromAsync简化异步可迭代对象转为数组;Uint8Array原生支持Base64和Hex转换。这些轻量化API减少样板代码,降低潜在bug,提升开发效率。

目录

文章目录隐藏

  1. 一、判断 Error,不用再猜了
  2. 二、数字求和,不该这么容易出错
  3. 三、Map 终于不用先 has 再 set 了
  4. 四、收集 async iterable,不用手写循环了
  5. 五、二进制转 base64 / hex
  6. 总结

ES2026 第 17 版新增的 5 个新特性

每年更新的 ECMAScript 标准持续优化 JavaScript 语言细节,2026 版 ES2026 并未推出颠覆性重磅功能,而是针对性补齐了前端开发者长期遇到的各类编码短板。本文详解 ES2026 五大实用新特性,对比新旧写法,梳理错误判断、数值计算、Map 操作、异步遍历、二进制转换的优化升级,全方位展示本次版本的实用性改进。

一、判断 Error,不用再猜了

前端在实际开发的过程中你肯定写过 try/catch。

但你有没有遇到过这种情况:

你 catch 到了一个东西,却不确定它到底是不是一个真正的 Error。

有时别人会直接 throw 一个普通对象。

有时错误来自不同 iframe、worker 或 JavaScript realm。

这时候,instanceof Error 就不一定可靠。

因为每个 realm 都有自己的 Error 构造函数。

以前我们可能会这样写:

// 旧写法:跨 realm 时可能判断错误
function isError(err) {
  return err instanceof Error;
}

代码看起来没问题。但如果错误来自另一个 iframe,这个判断可能会返回 false。

哪怕它确实是一个合法 Error。

ES2026 新增了:

Error.isError()

新写法是:

// 新写法:不管错误来自哪里,都更一致
function isError(err) {
  return Error.isError(err);
}

这个变化看起来很小。

但如果你的应用涉及多个模块、iframe、web worker,或者复杂运行环境,它能减少一类非常难排查的 bug。

以前你以为自己抓到的是普通对象,其实只是 instanceof 被 realm 搞翻了。现在,语言层面终于给了一个更可靠的判断方式。

二、数字求和,不该这么容易出错

JavaScript 的数字使用 IEEE 754 浮点数,这件事本身没问题。

问题是,当你不断累加小数时,精度误差会慢慢出现。

经典例子:

// 旧写法:精度误差会累积
const numbers = [0.1, 0.2, 0.3];
const total = numbers.reduce((a, b) => a + b, 0);

console.log(total);
// 0.6000000000000001

你想要的是 0.6。

JavaScript 给你的是:

0.6000000000000001

三个数字的时候,这点误差看起来没什么。

但如果你在处理几千行交易数据、统计数据、账单、报表,这种小误差就可能变成真问题。

尤其是金融场景。

ES2026 新增了:

Math.sumPrecise()

它专门用来对数组里的数字进行更高精度求和。

// 新写法:更精确
const total = Math.sumPrecise([0.1, 0.2, 0.3]);

console.log(total);
// 0.6

这不是炫技功能,这是非常实用的补洞。

如果你的业务对数值准确性敏感,这个 API 会少写很多补丁代码。

也少掉很多“为什么总数多了一点点”的尴尬问题。

三、Map 终于不用先 has 再 set 了

只要你用过 Map,一定写过这种代码:

// 旧写法:每次都要手动判断
if (!map.has(key)) {
  map.set(key, []);
}

const list = map.get(key);

这个模式太常见了。

先判断 key 存不存在,不存在就塞一个默认值。然后再取出来继续用。写一次还能接受,写十次就开始烦。

ES2026 新增了:

Map.prototype.getOrInsert()

现在可以一行搞定:

// 新写法:不存在就插入,并立刻返回值
const list = map.getOrInsert(key, []);

逻辑更清楚,代码也更短。

如果默认值构造成本比较高,比如要创建一个很重的对象,也可以用:

getOrInsertComputed()

它接收一个函数,只有在 key 不存在时才会真正执行。

const set = map.getOrInsertComputed(key, () => new Set());

这就避免了无意义的对象创建。

更好的是,这两个方法不只适用于 Map,WeakMap 也支持。

这类 API 看起来不惊艳,但它会让大量业务代码更干净。尤其是你在做分组、缓存、索引、依赖关系收集时,会经常用到。

四、收集 async iterable,不用手写循环了

Array.from()很好用,它可以把 iterable 转成普通数组。

但问题是:它不适用于async iterable

比如:

  • stream。
  • async generator。
  • 分页 API 返回的数据。
  • 异步数据源。

以前你要把 async iterable 收集成数组,大概得这么写:

// 旧写法:手动 for await 收集
async function collectAll(asyncIterable) {
  const result = [];

  for await (const item of asyncIterable) {
    result.push(item);
  }

  return result;
}

能用,但每次都要写这套仪式感。

ES2026 新增了:

Array.fromAsync()

新写法非常直接:

// 新写法:一行收集 async iterable
const result = await Array.fromAsync(asyncIterable);

如果你经常处理分页 API、异步生成器、流式数据,这个功能会明显减少样板代码。

以前你只是想要一个数组,结果被迫写一段循环。

现在终于可以一行解决,这就是标准库该做的事。

五、二进制转 base64 / hex

做文件上传、加密、图片处理、二进制协议时,经常要在 Uint8Array 和 base64 字符串之间转换。

以前写起来很丑。

比如转 base64:

// 旧写法:btoa + 手动字符转换
function toBase64(bytes) {
  let binary = "";

  bytes.forEach((b) => {
    binary += String.fromCharCode(b);
  });

  return btoa(binary);
}

这套写法不仅啰嗦,还容易出问题。

尤其是字符超出 btoa 支持范围时,很容易踩坑。

ES2026 直接给 Uint8Array 增加了原生方法。

const bytes = new Uint8Array([72, 101, 108, 108, 111]);

console.log(bytes.toBase64());
// "SGVsbG8="

console.log(bytes.toHex());
// "48656c6c6f"

反过来也可以:

const decoded = Uint8Array.fromBase64("SGVsbG8=");

这类功能不会上热搜。

但它会让代码变短、变清楚、变不容易出错。

尤其是你做 Web Crypto、文件处理、上传下载、图片转码时,会很常用。

以前那些String.fromCharCode小技巧,终于可以少写了。

总结

ES2026 官方确认的新功能,没有标题党说得那么夸张。它不会彻底改变 JavaScript,也不会逼你马上迁移项目,但它确实补上了几个长期存在的小缺口。

这 5 个最值得记:

  1. Error.isError():跨 realm 判断 Error 更可靠。
  2. Math.sumPrecise():小数求和更精确,减少浮点误差。
  3. Map.prototype.getOrInsert():Map / WeakMap 不用再手写 has + set。
  4. Array.fromAsync():一行收集 async iterable。
  5. Uint8Array base64 / hex方法:二进制编码转换不用再手搓。

ES2026 的更新聚焦日常前端开发痛点,以轻量化、实用性优化为主,有效解决了浮点精度误差、跨环境错误判断失效、冗余样板代码、二进制转换繁琐等长期问题。这些细微却关键的语法与 API 升级,精简了业务代码、降低了隐性 BUG 概率,让 JavaScript 开发更规范、高效、稳定,贴合实际开发需求。

以上关于ES2026 第 17 版新增的 5 个新特性的文章就介绍到这了,更多相关内容请搜索码云笔记以前的文章或继续浏览下面的相关文章,希望大家以后多多支持码云笔记。

「点点赞赏,手留余香」

34

给作者打赏,鼓励TA抓紧创作!

微信微信 支付宝支付宝

还没有人赞赏,快来当第一个赞赏的人吧!

声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 admin@mybj123.com 进行投诉反馈,一经查实,立即处理!
重要:如软件存在付费、会员、充值等,均属软件开发者或所属公司行为,与本站无关,网友需自行判断
码云笔记 » ES2026 第 17 版新增的 5 个新特性