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 在拼命帮开发者少掉坑、少写屎山,剩下的就靠你们写出优雅的业务逻辑啦!

相关推荐
永远不打烊几秒前
Window环境 WebRTC demo 运行
前端
风舞2 分钟前
一文搞定JS所有类型判断最佳实践
前端·javascript
coding随想2 分钟前
哈希值变化的魔法:深入解析HTML5 hashchange事件的奥秘与实战
前端
一树山茶9 分钟前
uniapp在微信小程序中实现 SSE进行通信
前端·javascript
coding随想9 分钟前
小程序中的pageshow与pagehide事件,HTML5中也有?揭秘浏览器往返缓存(BFCache)
前端
萌萌哒草头将军15 分钟前
Rspack 1.5 版本更新速览!🚀🚀🚀
前端·javascript·vue.js
阿卡不卡19 分钟前
基于多场景的通用单位转换功能实现
前端·javascript
atwednesday22 分钟前
git提交规范
github
♡喜欢做梦30 分钟前
jQuery 从入门到实践:基础语法、事件与元素操作全解析
前端·javascript·jquery
flyliu34 分钟前
前端权限控制应该怎么做
前端·前端工程化