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

相关推荐
阿波罗尼亚15 分钟前
复杂查询:直接查询/子查询/视图/CTE
java·前端·数据库
正义的大古27 分钟前
OpenLayers地图交互 -- 章节九:拖拽框交互详解
前端·vue.js·openlayers
三十_A1 小时前
【实录】使用 Verdaccio 从零搭建私有 npm 仓库(含完整步骤及避坑指南)
前端·npm·node.js
huangql5201 小时前
从零到一打造前端内存监控 SDK,并发布到 npm ——基于 TypeScript + Vite + ECharts的解决方案
前端·typescript·echarts
weixin_456904271 小时前
离线下载npm包
前端·npm·node.js
低代码布道师1 小时前
少儿舞蹈小程序(19)地址列表功能实现及默认地址逻辑
前端·低代码·小程序
90后的晨仔1 小时前
Vue3 + TypeScript + Pinia 实战全解析
前端
90后的晨仔1 小时前
Vue 3 + TypeScript + Pinia 实战架构指南
前端
妄小闲1 小时前
免费html网页模板 html5网站模板 静态网页模板
前端·html·html5
困惑阿三2 小时前
React 展示Markdown内容
前端·react.js·前端框架