JavaScript 接下来要加啥新功能?9个特性!

本篇依然来自于我们的 《前端周刊》 项目!

由团队成员 掘金安东尼 翻译,欢迎大家 进群 持续追踪全球最新前端资讯!!

原文:jsdev.space/future-of-j...

各位jym,JS 又要更新啦!这次(108th ) TC39(就是搞标准的组织)把 9 个提案推进了一大波,从能直接用的正式功能刚冒芽的草案都有。来,一起看看:

✅ Stage 4:已经能用了!

(1)显式资源管理 using

JS 终于有了确定释放资源 的机制。写 using(或者 await using),退出代码块时文件/连接会自己收尾。

👉 这下写网络、文件、数据库操作不用怕忘记关资源,真的像 C#/Python 一样省心。

javascript 复制代码
class FileHandle {
  constructor(name) { this.name = name; }
  [Symbol.dispose]() {
    console.log(`${this.name} closed`);
  }
}

{
  using file = new FileHandle("data.txt");
  // 文件操作...
}
// 自动调用 dispose

(2)Array.fromAsync

专门为异步迭代器准备的,返回 Promise,简单干净。

👉 写数据流处理、爬虫、异步批量任务的时候超顺手。

javascript 复制代码
async function* generate() {
  yield 1;
  yield 2;
}
const nums = await Array.fromAsync(generate());
console.log(nums); // [1, 2]

(3)Error.isError

终于有个统一 API 来判断对象是不是 Error 了。

👉 跨 iframe、跨 Realm 的情况再也不用写奇怪的 instanceof 兼容代码。

javascript 复制代码
Error.isError(new TypeError("oops")); // true
Error.isError({ name: "TypeError" }); // false

🚀 Stage 3:候选阶段

(4)不可变 ArrayBuffer

新增 transferToImmutable() / sliceToImmutable(),转完就不能改。

👉 做多线程、Worker、二进制数据传递的时候,避免乱改内存,性能和安全性双赢。

ini 复制代码
let buf = new ArrayBuffer(100);
let imm = buf.transferToImmutable();
console.log(buf.byteLength, imm.byteLength); // 0, 100
imm[0] = 1; // ❌ TypeError

📝 Stage 2:草案

(5)Random.Seeded

固定种子,随机数序列可复现。游戏、模拟、测试用例写的人狂喜!

arduino 复制代码
const prng = new Random.Seeded(42);
console.log(prng.random()); // 每次都一样

(6)Number.prototype.clamp

替代 Math.min(Math.max(x, min), max) 的清爽写法。再也不用写"套娃公式"了,代码可读性拉满。

scss 复制代码
(5).clamp(0, 10);   // 5
(-5).clamp(0, 10);  // 0
(15).clamp(0, 10);  // 10

🌱 Stage 1:刚冒芽

(7)Intl.NumberFormat 尾随零

新增 trailingZeroDisplay,控制小数尾零的显示。前端写财务系统和报表时,终于不用 hack 了。

php 复制代码
new Intl.NumberFormat("en", { 
  minimumFractionDigits: 2,
  trailingZeroDisplay: "auto"
}).format(1.5); // "1.50"

(8)Comparisons

标准化的 diff 输出接口:测试框架作者们笑开花,日志可视化工具也能直接拿来用。


(9)Random 命名空间

官方内置随机工具,包含 intsampleshuffle。这不比每次复制粘贴一个 utils.js 香?

c 复制代码
Random.int(-5, 5);        // -1
Random.sample(["A","B"]); // "B"
Random.shuffle([1,2,3]);  // [3,1,2]

🔮 What's Next

JavaScript 的升级方向已经很明确了:

  • 异步更顺Array.fromAsync + using
  • 数据更安全:不可变 ArrayBuffer
  • 随机更靠谱:Random.Seeded + Random 命名空间
  • 开发更省心clamp、Error.isError、尾随零

下一次 TC39 会议定在 9 月底,咱们再蹲一波好消息。 总结一句话:JS 在拼命帮开发者少掉坑、少写屎山,剩下的就靠你们写出优雅的业务逻辑啦!

相关推荐
好大的月亮9 小时前
oss中的文件替换后chrome依旧下载到缓存文件概述
前端·chrome·缓存
Broken Arrows9 小时前
解决Jenkins在构建前端任务时报错error minimatch@10.0.3:……的记录
运维·前端·jenkins
明月与玄武9 小时前
JS 自定义事件:从 CustomEvent 到 dispatchEvent!
前端·javascript·vue.js
Zhencode9 小时前
vue之异步更新队列
前端·javascript·vue.js
九年义务漏网鲨鱼9 小时前
从零学习 Agentic RL(四)—— 超越 ReAct 的线性束缚:深入解析 Tree-of-Thoughts (ToT)
前端·学习·react.js
Jay丶9 小时前
Next.js 与 SEO:让搜索引擎爱上你的网站 💘
前端·javascript·react.js
狗头大军之江苏分军9 小时前
请不要在感情里丢掉你的“我”
前端·后端
路光.10 小时前
一.React相关面试真题
前端·react.js·前端框架
十年_H10 小时前
Cesium 顶点着色器的数据来源
javascript·webgl·cesium
hweiyu0010 小时前
Gradle 与 CI/CD 集成:Jenkins/GitHub Actions 自动化构建配置
ci/cd·github·jenkins·gradle