本篇依然来自于我们的 《前端周刊》 项目!
各位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 命名空间
官方内置随机工具,包含 int
、sample
、shuffle
。这不比每次复制粘贴一个 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 在拼命帮开发者少掉坑、少写屎山,剩下的就靠你们写出优雅的业务逻辑啦!