11---
22title : ES2021新特性
3+ description : 介绍 ES2021 的 replaceAll、Promise.any、逻辑赋值运算符、数值分隔符、WeakRef 等特性
34published : 2022-12-01
45tags : [JavaScript]
56category : JavaScript
@@ -51,7 +52,7 @@ Promise.any([p1, p2, p3])
5152
5253相似的 API
5354
54- | 名字 | 描述 | |
55+ | 名字 | 描述 | 版本 |
5556| ------------------ | ------------------------------------- | ------ |
5657| Promise.allSettled | 不会短路 | ES2020 |
5758| Promise.all | 当有一个 rejected 就短路 | ES2015 |
@@ -98,9 +99,9 @@ const token = {};
9899
99100/**
100101 * @function 注册监听
101- * @param 需要监听的对象
102- * @param 需要合并的Grid
103- * @param 取消监听用的标识符
102+ * @param obj 需要监听的对象
103+ * @param heldValue 传递给回调的值(对象被回收时作为参数传入)
104+ * @param token 取消监听用的标识符
104105 */
105106fr .register (obj, " obj deleted!" , token);
106107
@@ -120,18 +121,19 @@ fr.unregister(token);
120121
121122``` javascript
122123let num1 = 1000000000 ; // 1000000000
123-
124- let num2 = 1_000_000_000 ; // 🆕 1000000000
125-
124+ let num2 = 1_000_000_000 ; // 🆕 1000000000
126125console .log (num1 === num2); // true
127126
127+ // 正确用法
128128let a = 1_1 ; // 11
129- let a = 1__1 // 错误,只允许一个下划线作为数字分隔符
130- let a = 1_ ; // 错误,分隔符不能在尾部
131- let a = _1 ; // 错误,分隔符不能在头部
132129
133- Number (1_1 ); // 11
134- Number (' 1_1' ); // NaN
130+ // 以下为错误示例(会报错):
131+ // let b = 1__1; // 错误:只允许一个下划线作为数字分隔符,不可连续
132+ // let c = 1_; // 错误:分隔符不能在尾部
133+ // let d = _1; // 错误:分隔符不能在头部
134+
135+ Number (1_1 ); // 11
136+ Number (' 1_1' ); // NaN(字符串转数值时无法识别分隔符)
135137```
136138
137139::: caution
@@ -147,18 +149,18 @@ Number('1_1'); // NaN
147149``` javascript
148150a || = b;
149151// 等效于以下两种写法
150- // a || (a = b); a为false时执行右边
152+ // a || (a = b); a 为假值时执行右边
151153// if(!a) a = b;
152154
153155a && = b;
154156// 等效于以下两种写法
155- // a && (a = b); a为truth时执行右边
157+ // a && (a = b); a 为真值时执行右边
156158// if(a) a = b
157159
158160a ?? = b;
159161// 等效于以下两种写法
160- // a ?? (a = b); a为undefined或null时执行右边
161- // if(a === nudefined || a === null) a = b;
162+ // a ?? (a = b); a 为 undefined 或 null 时执行右边
163+ // if (a === undefined || a === null) a = b;
162164` ` `
163165
164166其中` ?? ` 运算符只有左边是 undefined 或 null 才返回右边。
0 commit comments