JavaScript 2025 新特性
JavaScript 2025 新特性
| 特性 | 描述 | |
|---|---|---|
| RegExp /v flag | /u(Unicode)标志的"升级版" | |
| RegExp.escape() | 返回一个转义了正则表达式字符的字符串 | |
| Float16Array | 一个存储 16 位浮点数的类型化数组 | |
| Math.f16round() | 返回最接近的 16 位浮点数 | |
| Promise.try() | 启动一个 Promise 链来处理 Promise 拒绝 | |
| 导入属性 | 导入语句中允许的导入属性 |
2025 年新增集合功能
| 功能 | 描述 | |
|---|---|---|
| union() | 返回两个集合的并集 | |
| intersection() | 返回两个集合的交集 | |
| difference() | 返回两个集合的差集 | |
| symmetricDifference() | 返回两个集合的对称差集 | |
| isSubsetOf() | 如果此集合是给定集合的子集,则返回 true | |
| isSupersetOf() | 如果此集合是给定集合的超集,则返回 true | |
| isDisjointFrom() | 如果此集合不包含给定集合中的任何元素,则返回 true |
警告
这些功能相对较新。
旧版浏览器可能需要替代代码(Polyfill)。
正则表达式 /v 标志
v 标志是对 u 标志的"升级"。
u(Unicode)标志启用正则表达式的完整 Unicode 支持。
v 标志启用更多与 Unicode 相关的功能。
新增功能包括:
- \p 转义序列匹配的是字符串,而不仅仅是字符。
- 字符类已升级,支持交集、并集和减法语法,以及匹配多个 Unicode 字符。
示例
let text = "Hello 😄";
let pattern = /\p{RGI_Emoji}/v;
let result = pattern.test(text);
亲自试一试 »
let text = "Hello 😄";
let pattern = /\p{RGI_Emoji}/;
let result = pattern.test(text);
亲自试一试 »自 2025 年 5 月起,所有现代浏览器均支持 /正则表达式/v:
| Chrome 136 |
Edge 136 |
Firefox 134 |
Safari 18.2 |
Opera 121 |
| 2025年4月 | 2025年5月 | 2025年1月 | 2024年12月 | 2025年6月 |
RegExp.escape() 方法
RegExp.escape() 方法返回一个字符串,其中属于正则表达式语法的字符已被转义。
这使得我们可以将 +、*、?、^、$、(、)、[、]、{、}、| 和 \ 等字符视为字面值,而不是正则表达式的一部分。
示例
创建一个匹配字符串"[*]"的正则表达式:
// 转义文本以用作正则表达式
const safe = RegExp.escape("[*]");
// 创建一个新的正则表达式
const regex = new RegExp(safe);
// 要替换的文本
const oldText = "[*] is a web school.";
// 执行替换操作
const newText = oldText.match(regex, "W3Schools");
亲自试一试 »RegExp.escape() 自 2025 年 5 月起,所有现代浏览器均支持该函数:
| Chrome 136 |
Edge 136 |
Firefox 134 |
Safari 18.2 |
Opera 121 |
| 2025年4月 | 2025年5月 | 2025年1月 | 2024年12月 | 2025年6月 |
Float16Array 方法
Float16Array 是一个 TypedArray,它以 IEEE 754 半精度格式存储 16 位(半精度)浮点数。
Float16Array 需要的内存是 Float32Array 的一半,是 Float64Array 的四分之一。
示例
const myArr = new Float16Array([1.5, 2.5, 3.5, 4.5]);
let bytes = myArr.BYTES_PER_ELEMENT;
let length = myArr.length;亲自试一试 »Float16Array 对象自 2024 年 6 月起在所有现代浏览器中均受支持:
| Chrome 135 |
Edge 135 |
Firefox 129 |
Safari 18.2 |
Opera 120 |
| 2025年4月 | 2025年4月 | 2024年8月 | 2024年12月 | 2025年5月 |
Math.f16round 方法
静态方法 Math.f16round() 返回一个数的最接近的 16 位浮点数表示形式。
示例
let a = Math.f16round(2.60);
let b = Math.f16round(2.50);
let c = Math.f16round(2.49);
let d = Math.f16round(-2.60);
let e = Math.f16round(-2.50);
let f = Math.f16round(-2.49);
亲自试一试 »Math.f16round() 方法自 2024 年 6 月起在所有现代浏览器中均受支持:
| Chrome 135 |
Edge 135 |
Firefox 129 |
Safari 18.2 |
Opera 120 |
| 2025年4月 | 2025年4月 | 2024年8月 | 2024年12月 | 2025年5月 |
Promise.try() 方法
Promise.try() 方法从可能抛出异常的同步代码开始创建一个 Promise 链。
这确保异常能够被正确地处理为 Promise 拒绝。
示例
function compute() {
return Promise.try(() => {
const v = mayThrowSync();
return asyncFunc(v);
});
}
JavaScript Set union()
union() 方法返回两个集合的并集。
union() 方法返回一个新集合,其中包含当前集合、参数集合或两者都包含的元素。

示例
const A = new Set(['a','b','c']);
const B = new Set(['b','c','d']);
const C = A.union(B);
亲自试一试 »union() 方法自 2024 年 6 月起在所有现代浏览器中均受支持:
| Chrome 122 |
Edge 122 |
Firefox 127 |
Safari 17 |
Opera 108 |
| 2024年2月 | 2024年2月 | 2024年6月 | 2023年9月 | 2024年3月 |
JavaScript Set intersection()
intersection() 方法返回两个集合的交集。
intersection() 方法返回一个新集合,其中包含当前集合和参数集合中的元素。

示例
const A = new Set(['a','b','c']);
const B = new Set(['b','c','d']);
const C = A.intersection(B);
亲自试一试 »intersection() 方法自 2024 年 6 月起在所有现代浏览器中均受支持:
| Chrome 122 |
Edge 122 |
Firefox 127 |
Safari 17 |
Opera 108 |
| 2024年2月 | 2024年2月 | 2024年6月 | 2023年9月 | 2024年3月 |
JavaScript Set difference()
difference() 方法返回两个集合之间的差集。
difference() 方法返回一个新集合,其中包含当前集合中存在但不在参数集合中的元素。

示例
const A = new Set(['a','b','c']);
const B = new Set(['b','c','d']);
const C = A.difference(B);
亲自试一试 »difference() 方法自 2024 年 6 月起在所有现代浏览器中均受支持:
| Chrome 122 |
Edge 122 |
Firefox 127 |
Safari 17 |
Opera 108 |
| 2024年2月 | 2024年2月 | 2024年6月 | 2023年9月 | 2024年3月 |
JavaScript Set symmetricDifference()
symmetricDifference() 方法返回两个集合之间的对称差集。
symmetricDifference() 方法返回一个新集合,其中包含存在于当前集合或参数集合中,但不同时存在于两者中的元素。

示例
const A = new Set(['a','b','c']);
const B = new Set(['b','c','d']);
const C = A.symetricDifference(B);
亲自试一试 »symmetricDifference() 方法自 2024 年 6 月起在所有现代浏览器中均受支持:
| Chrome 122 |
Edge 122 |
Firefox 127 |
Safari 17 |
Opera 108 |
| 2024年2月 | 2024年2月 | 2024年6月 | 2023年9月 | 2024年3月 |
JavaScript Set isSubsetOf()
isSubsetOf() 方法返回 true,表示此集合中的所有元素都包含在参数集合中。

示例
const A = new Set(['a','b','c']);
const B = new Set(['b','c','d']);
let answer = A.isSubsetOf(B);
亲自试一试 »isSubsetOf() 方法自 2024 年 6 月起在所有现代浏览器中均受支持:
| Chrome 122 |
Edge 122 |
Firefox 127 |
Safari 17 |
Opera 108 |
| 2024年2月 | 2024年2月 | 2024年6月 | 2023年9月 | 2024年3月 |
JavaScript Set isSupersetOf()
isSupersetOf() 方法返回 true,如果参数集中的所有元素也都在此集合中:

示例
const A = new Set(['a','b','c']);
const B = new Set(['b','c','d']);
let answer = A.isSupersetOf(B);
亲自试一试 »isSupersetOf() 方法自 2024 年 6 月起在所有现代浏览器中均受支持:
| Chrome 122 |
Edge 122 |
Firefox 127 |
Safari 17 |
Opera 108 |
| 2024年2月 | 2024年2月 | 2024年6月 | 2023年9月 | 2024年3月 |
JavaScript Set isDisjointFrom()
isDisjointFrom() 方法返回 true,表示该集合与参数集合没有共同元素。

示例
const A = new Set(['a','b','c']);
const B = new Set(['b','c','d']);
let answer = A.isDisjointFrom(B);
亲自试一试 »Set.isDisjointFrom() 方法自 2024 年 6 月起在所有现代浏览器中均受支持:
| Chrome 122 |
Edge 122 |
Firefox 127 |
Safari 17 |
Opera 108 |
| 2024年2月 | 2024年2月 | 2024年6月 | 2023年9月 | 2024年3月 |
注意
同时使用 u 和 v 标志会导致语法错误。
带有 import 导入属性的模块
语法
import {names} from "module-name" with {key:"data"};示例
import config from "config.json" with {type:"json"};
import styles from "styles.css" with {type:"css"};
import data from "data.json" with {type:"json"};
