replaceAll
替换所有匹配的字符
let str = "一二一一三四一";
// replace 只会匹配第一项
str.replace("一",1) // "1二一一三四一"
// replaceAll 匹配所有符合条件的
str.replaceAll("一",1) // "1二11三四1"
数字分割
自定义分割位置,遮掩更有利于阅读。在使用的时候 还是number类型
let num2 = 1_234_567_890; // 1234567890
let num2 = 1_23456_7890; // 1234567890
逻辑运算符
||=
检测a是否为假
,如果是假a = b;否则返回a本身。等价于 a || (a = b)
let a = "";
let b = true;
let c = "c";
a ||= b; // ture
c ||= b; // c
// 等价于
let a = "";
let b = "b"
if(a === "" || a === 0 || a === null || a === undefined || a == false ){
a = b;
}
console.log(a);
console.log(a || (a + b))
&&=
检测a值是否为真,如果为真a = b,否则返回本身。等价于a && (a = b)
let a = '';
let b = "b"
if(a){
a = b
}
console.log(a);
console.log(a && (a = b));
??=
判断a是否为null或者undefined,如果是a = b ,否则返回a本身。等价于a ?? (a = b)。??
let a = undefined;
let b = "b";
if (a === null || a === undefined) {
a = b;
}
console.log(a);
console.log( a??b);
Promise
es2021新增Promise.any。执行规则是有一个成就返回成功,如果没有成功的就返回失败
,顺便复习一下其他的api
const p1 = Promise.resolve("1");
const p2 = Promise.resolve("2");
const p3 = Promise.reject("error");
const p4 = () => {
return new Promise((resolve) => {
setTimeout(() => {
resolve("ok");
}, 1000);
});
};
// 所有都成功才返回成功,否则返回失败
Promise.all([p1, p2, p3])
.then((res) => console.log(res))
.catch((e) => console.log(e));
// error
// 谁先执行快就返回谁的结果
Promise.race([p1,p2,p3])
.then((res) => console.log(res))
.catch((e) => console.log(e));
// 1
// es2021新增 不管时间多久,只要有一个成功就返回成功,所有都失败才会返回失败。
Promise.any([p3, p4()])
.then((res) => console.log(res))
.catch((e) => console.log(e));
// ok
// allSettled 好像是es2020的,他会返回所有的promise状态,以数组形式。
Promise.allSettled([p1, p2, p3, p4()])
.then((res) => {
res.forEach((p) => {
console.log(p.status);
});
})
.catch((e) => console.log(e));