Logical Assignment Operators
let demo1;
demo1 = demo1 || 1;
console.log(demo1);
let demo2;
demo2 ||= 2;
console.log(demo2);
Promise.any
Promise.any 和 Promise.race 和 Promise.all
any 会返回第一个 resolve 的 promise(即使前面有 reject 优先返回),如果都没有 resolve,会返回一个聚合的 Error,用处比如展示第一个可用的图片
race 会返回最快有结果的 promise,不管是 resolve 或者 reject
all 会在所有 promise 都 resolve 时返回,如果有一个 reject 则返回 reject
const promiseReject1 = new Promise((resolve, reject) => setTimeout(reject, 500, 'promiseReject1'));
const promiseReject2 = new Promise((resolve, reject) => setTimeout(reject, 1000, 'promiseReject2'));
const promiseReject3 = new Promise((resolve, reject) => setTimeout(reject, 1500, 'promiseReject3'));
const promiseResolve1 = new Promise((resolve, reject) => setTimeout(resolve, 500, 'promiseResolve1'));
const promiseResolve2 = new Promise((resolve, reject) => setTimeout(resolve, 1000, 'promiseResolve2'));
const promiseResolve3 = new Promise((resolve, reject) => setTimeout(resolve, 1500, 'promiseResolve3'));
Promise.any([
promiseReject1, promiseResolve1, promiseResolve2
])
.then(value => console.log(`Result Promise.any Resolve: ${value}`))
.catch (err => console.log(err))
// Result Promise.any Resolve: promiseResolve1
Promise.any([
promiseReject1, promiseReject2, promiseReject3
])
.then(value => console.log(`Result Promise.any Reject: ${value}`))
.catch (err => console.log('Result Promise.any Reject err', err)) // AggregateError 聚合错误
// Result Promise.any Reject err: [object Error]
Promise.race([
promiseReject3, promiseResolve1, promiseResolve2
])
.then(value => console.log(`Result Promise.race: ${value}`))
.catch (err => console.log(`Result Promise.race err: ${err}`))
// Result Promise.race: promiseResolve1
Promise.all([
promiseReject1, promiseReject1, promiseResolve2
])
.then(value => console.log(`Result Promise.all: ${value}`))
.catch (err => console.log('Result Promise.all err', err))
// Result Promise.all err" "promiseReject1
String.prototype.replaceAll
const str = 'hello xiaoming, hello world';
console.log(str.replace('hello', 'hi'));
console.log(str.replaceAll('hello', 'hi')); // 之前用正则实现全局匹配,现在可以直接用 replaceAll
console.log(str.replace(/hello/g, 'hi'));
Numeric Separators
const number = 100_000;
console.log(number);
WeakRef
弱引用,会有引用但会被垃圾回收,因为不同js引擎实现方式会不同,于是不建议使用
FinalizationRegistry
让你的对象在被垃圾回收时请求一个回调,不建议使用
codepen.io/gaodaxin/pe… h3manth.com/ES2021/#wea… www.infoq.cn/article/7z8…