ECMAScript 2025(ES2025)引入了多項實用改進,覆蓋異步處理、迭代操作、正則表達式、集合操作和模塊系統等領域,旨在解決開發中的常見痛點
異步處理改進:Promise.try
- 用途: 統一處理同步/異步函數的錯誤,避免因同步錯誤未被捕獲導致的異常
Promise.try(mightThrow)
.then(console.log)
.catch(console.error);
- 優勢: 替代冗長的new Promise(resolve => resolve(fn()))或異步執行的Promise.resolve().then(fn),同步錯誤直接進入.catch
迭代器增強:原型方法
- 新增方法:
map、filter、take、drop
等,類似數組方法
const iter = [1, 2, 3].values();
iter.map(x => x * 2).forEach(console.log); // 輸出 2, 4, 6
- 優勢: 減少自定義生成器函數的代碼量,支持鏈式操作,提升迭代器處理效率
正則表達式增強
1. RegExp.escape()
- 用途: 安全轉義用戶輸入中的正則特殊字符(如
*、$
)
const regex = new RegExp(RegExp.escape("Hello (World)"), 'g');
2. 動態模式修飾符
- 語法: (
?i:pattern
)啟用標志,(?-i:pattern
)禁用
const regex = /^(?i:abc)def(?-i:ghi)$/;
regex.test("AbcDefGHI"); // true(abc不區分大小寫,ghi區分)
3. 重復命名捕獲組
const regex = /^(?<year>\d{4})-(?<month>\d{2})|(?<year>\d{4})\/(?<month>\d{2})$/;
const match = regex.exec("2025/04");
console.log(match.groups.year); // "2025"
集合操作:Set 新方法
- 新增方法:
union(并集)、intersection(交集)、difference(差集)
const setA = new Set([1, 2, 3]);
const setB = new Set([2, 3, 4]);
console.log(setA.union(setB)); // Set {1, 2, 3, 4}
模塊系統改進
1. JSON 模塊
import config from './config.json' with { type: 'json' };
2. 導入屬性
import data from './data.csv' with { type: 'csv' };
數值處理:Float16Array
- 用途: 支持 16 位浮點數,適用于圖形和機器學習
const arr = new Float16Array([1.0, 2.3, 3.4]);
- 注意: 精度較低,適用于特定高性能場景,非通用計算
閱讀原文:原文鏈接
該文章在 2025/5/6 12:47:51 編輯過