ES2021
中对 Javascript
的新增和改进replaceAll
- 全部替换js
默认的 replace
方法仅替换字符串中一个模式的第一个实例,要全局替换,你需要自己写正则,因此 ES2021
带来了全新的 replaceAll
方法。"Hello".replaceAll("l", "L"); // ‘HeLLo‘
Promise.any
Promise 的短路返回Promise
全局对象的静态方法,可以放 Promise
数组,只要有一个 Promise
完成解析,就短路返回一个值。如果所有的 promise
都被拒绝,那么它将抛出一个汇总错误消息)。Promise.all
功能相反。Promise.any([
new Promise((resolve, reject) => setTimeout(reject, 200, "Third")),
new Promise((resolve, reject) => setTimeout(resolve, 1000, "Second")),
new Promise((resolve, reject) => setTimeout(resolve, 2000, "First")),
])
.then((value) => console.log(`Result: ${value}`))
.catch((err) => console.log(err));
/**** Output ****/
// Result: Second
Promise.any([
new Promise((resolve, reject) => setTimeout(reject, 200, "Third")),
new Promise((resolve, reject) => setTimeout(reject, 1000, "Second")),
new Promise((resolve, reject) => setTimeout(reject, 2000, "First")),
])
.then((value) => console.log(`Result: ${value}`))
.catch((err) => console.log(err));
/**** Output ****/
// AggregateError: All promises were rejected
WeakRef
弱引用Java
中有类似的实现。let obj = { name: "Andy" };
const myRef = new WeakRef(obj);
myRef.deref(); // { name: "Andy" }
undefined
。JavaScript
中有许多赋值运算符和逻辑运算符,例如:// Assignment Operator Example
let num = 5;
num += 10;
console.log(num); // 15
// Logical Operator Example
let num1 = 6;
let num2 = 3;
console.log(num1 === 6 && num2 === 2); // false
console.log(num1 === 6 || num2 === 2); // true
ES2021
让我们将能把逻辑运算符和赋值运算符结合起来。a ||= b;
a &&= b;
a ??= b;
a ||= b;
// 等价于
1. a = a || b
2. if (!a) a = b
a &&= b;
// 等价于
1. a = a && b
2. if (a) a = b
a ??= b;
// 等价于
1. a = a ?? b
2. if (a === undefined || a === null) a = b
_
数值分隔符_
(下划线)字符,在数值组之间提供分隔,使数值读起来更容易。// 原写法
let num = 1000000000
// 新写法 - 可读性发生了变化
let billion = 1_000_000_000
原文:https://www.cnblogs.com/frank-link/p/14651241.html