2025 年 6 月,ECMA 国际组织正式发布了 ECMAScript 2025(ES16)标准。作为 JavaScript 语言的最新版本,ES2025 带来了八项实用新特性,将显著改善开发体验。下面我们详细看看这些新功能:
Promise.try() 提供了一种简洁方式处理可能抛出错误的函数(无论同步或异步)。
function getUserData() {
if (!isOnline) throw new Error("Offline");
return fetchData(); // 可能是异步操作
}
Promise.try(getUserData)
.then(data => console.log("成功:", data))
.catch(err => console.error("失败:", err));
核心优势:
统一处理: 不再区分同步错误 (try/catch) 和异步错误 (.catch)
避免微任务延迟: 相比 Promise.resolve().then(fn) 更高效
调试友好: 同步错误立即抛出,更容易定位问题
适用场景: 封装第三方库、整合旧代码、统一 api 错误处理逻辑(如 localStorage 访问)。
ES2025 为 Set 新增 7 个方法,支持基础集合运算:
const devs = new Set(['Alice', 'Bob', 'Charlie']);
const designers = new Set(['Bob', 'Diana']);
// 交集:同时是开发者和设计师的人
console.log(devs.intersection(designers)); // Set {'Bob'}
// 并集:所有人员
console.log(devs.union(designers)); // Set {'Alice','Bob','Charlie','Diana'}
// 差集:只是开发者的人
console.log(devs.difference(designers)); // Set {'Alice','Charlie'}
// 关系判断
console.log(designers.isSubsetOf(devs)); // false (设计师不是开发的子集)
适用场景: 处理用户标签、权限组、数据分析中的数据集比较。
现在可以像导入 JS 模块一样直接导入 JSON 文件:
// 静态导入
import config from './app-config.json' with { type: 'json' };
console.log(config.apiUrl);
// 动态导入
async function loadData() {
const translations = await import('./i18n/en.json', {
with: { type: 'json' }
});
return translations;
}
优点:
替代繁琐的 fetch + JSON.parse 操作
代码更简洁直观
适用于配置文件、多语言包等静态数据加载
新增的迭代器方法支持链式操作,尤其适合大数据集:
// 处理大型日志文件(逐行读取)
function* readLogFile() {
yield 'ERROR: Failed to connect';
yield 'INFO: User logged in';
yield 'DEBUG: Request sent';
// ... 可能包含数百万行
}
const errorLines = readLogFile()
.filter(line => line.includes('ERROR'))
.map(line => line.slice(6)) // 移除日志级别前缀
.toArray();
console.log(errorLines); // ['Failed to connect']
常用方法:
.filter(fn), .map(fn), .flatMap(fn)
.take(n) (取前 n 项), .drop(n) (跳过前 n 项)
.toArray() (转为数组)
核心价值: 惰性求值节省内存,适合流式数据或无限序列。
动态生成正则时,避免特殊字符导致错误:
const searchTerm = "file.(txt)"; // 包含正则特殊字符
const safePattern = RegExp.escape(searchTerm);
// 输出 "file\\.\\(txt\\)"
const regex = new RegExp(safePattern, 'i');
console.log(regex.test('File.(TXT)')); // true
作用: 防止正则注入,提升代码安全性。
在子表达式中独立设置匹配标志:
// 整体大小写敏感,但其中"code"部分不敏感
const regex = /^Learn (?i:CODE) today$/;
console.log(regex.test('Learn CODE today')); // true
console.log(regex.test('Learn code today')); // true
console.log(regex.test('learn CODE today')); // false (开头Learn区分大小写)
适用场景: 复杂正则中局部忽略大小写或多行匹配。
不同分支可使用同名捕获组,简化数据提取:
const dateRegex = /(?<year>\d{4})-(?<month>\d{2})|(?<month>\d{2})\/(?<year>\d{4})/;
const match1 = '2025-06'.match(dateRegex).groups;
console.log(match1); // { year: '2025', month: '06' }
const match2 = '06/2025'.match(dateRegex).groups;
console.log(match2); // { year: '2025', month: '06' }
优点: 统一处理不同格式的数据(如日期、货币),避免重复代码。
新增半精度浮点数类型,节省存储空间:
// 创建 16 位浮点数组
const sensorData = new Float16Array([1.2, 3.4, 0.8]);
// 数据视图操作
const buffer = new ArrayBuffer(4);
const view = new DataView(buffer);
view.setFloat16(0, 1.337, true); // true 表示小端字节序
console.log(view.getFloat16(0, true)); // 输出 1.3369140625
// 精度舍入
console.log(Math.f16round(1.337)); // 1.3369140625
应用领域: WebGPU/WebGL 图形处理、机器学习模型传输、内存敏感型应用。
已可用: Promise.try(), Set 新方法, 迭代器助手在 Chrome 126+、Firefox 127+ 可用
开发中: 导入属性 (import with)、RegExp.escape 已在 Safari TP 和 Chrome Canary 实现
即将到来: 正则内联标志、重复命名组、Float16 支持预计 2025 年底普及
ES2025 如何提升你的开发效率?
减少样板代码:如 Promise.try 和 JSON 模块简化常见任务
增强数据处理能力:Set 方法和迭代器助手让集合操作更流畅
优化资源使用:16 位浮点数节省内存,迭代器惰性求值处理大数据更高效
提升代码健壮性:RegExp.escape 和统一错误处理降低意外崩溃风险
这些新特性已逐步登陆主流浏览器和 Node.js 环境。现在就开始尝试它们,将为你的项目带来更简洁、更高效的 JavaScript 代码体验。
JavaScript 用“共享一切”的方法加载代码,这是该语言中最容易出错且最容易让人感到困惑的地方。其他语言使用诸如包这样的概念来定义代码作用域,但在 ECMAScript 6 以前,在应用程序的每一个 JavaScript 中定义的一切都共享一个全局作用域
回调地域 既一个异步请求需要另一个异步请求结果;由于 Javascript 是单线程的,所以这里执行顺序是 ajax1 -> ajax2 -> ajax3 -> ajax4;但是又由于这四个是异步操作
ECMAScript是一种由Ecma国际(前身为欧洲计算机制造商协会)通过ECMA-262标准化的脚本程序设计语言,一种可以在宿主环境中执行计算并能操作可计算对象的基于对象的程序设计语言。这种语言在万维网上应用广泛,它往往被称为JavaScript或JScript
函数声明 与 函数表达式 是有区别的。执行代码时,解析器会率先读取函数声明,并使其在执行任何代码之前可用(可以访问);至于函数表达式,则必须等到解析器执行到它所在的代码行,才会真正被解释执行。
ECMAScript 2020 是我们最喜欢的编程语言的第 11 版,其中包含一些新功能。有些是小特性,但有些将会有可能永远改变我们编写 JavaScript 的方式。
ECMAScript 2020 是 ECMAScript 语言规范的第11版。自1997年出版第一版以来,ECMAScript 已发展成为世界上使用最广泛的通用编程语言之一。
ECMAScript 语言规范每年都会进行一次更新,而备受期待的 ECMAScript 2024 将于 2024 年 6 月正式亮相。目前,ECMAScript 2024 的候选版本已经发布,为我们带来了一系列实用的新功能。
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!