是的,他又来了~

String.prototype.replaceAll

String.prototype.replaceAll(searchValue, replaceValue)

看到名字是不是第一时间反应 replace 加个g不就完事了哦,那如果遇到需要转义的正则,例如 + . 这些,

或许你还会这种方案

const str = 'qqqq+qqqq+qqqq';
str.split('+').join(' ');

如上所述的确可行,也就耗点性能而已嘛~ 由于经常有这种操作,也就催生了 replaceAll 方法,更加快捷的操作字符串

const str = 'qqqq+qqqq+qqqq';
str.replaceAll('+', ' ');

还是香的啊。

Promise.any

最近两个版本都有对 Promise 的Api扩充,例如 2020 的 allSettled,回顾下

const p = Promise.all([p1, p2, p3]);
  • Promise.all (Es 2015) 只有当传入的每个 Promise 实例都返回 fullField 时,p 才会 fullField,只要
    有一个rejected, p 的状态就会变成 rejected

  • Promise.race (Es 2015) 当传入的 Promise 实例中 有一个率先改变状态,那么P的状态就跟着改变,也就是说返回最先改变的
    Promise 状态(区分 fullField rejected

  • Promise.allSettled (Es 2020) 只有等传入的所有 Promise 实例都返回结果,不区分 fullField rejected
    包装实例才会有结束

  • Promise.any (Es 2021) 当传入的 Promise 有任何一个完成的 就返回那个已经有返回值的 Promise,如果所有的 Promise 都
    rejected 则返回 rejected 的 Promise

Promise.any(promises).then(
    (first) => {
        // 任何一个Promise完成
    },
    (error) => {
        // 所有的 Promise都拒绝了
    }
)

举个栗子,可以使用 Promise.any 来检测哪个接口或站点最快

Promise.any([
  fetch('https://v8.dev/').then(() => 'home'),
  fetch('https://v8.dev/blog').then(() => 'blog'),
  fetch('https://v8.dev/docs').then(() => 'docs')
]).then((first) => {
  // Any of the promises was fulfilled.
  console.log(first);
  // → 'home'
}).catch((error) => {
  // All of the promises were rejected.
  console.log(error);
});

逻辑赋值操作

先回顾下 Es 2020 的空值合并操作符 ??,当左侧操作数为 undefinde 或者 null 时,该操作会将右侧操作数值赋给左侧变量

const val = false ?? null;
  const val1 = '' ?? null;
  const val2 = 0 ?? null;
  const val3 = undefined ?? 0;
  const val4 = null ?? 0;
  console.log(val, 'val'); // false
  console.log(val1, 'val1'); // ''
  console.log(val2, 'val2'); // 0
  console.log(val3, 'val3'); // 0
  console.log(val4, 'val4'); // 0

再看看逻辑赋值运算符

let logic = 0;
logic ||= 1;
console.log(logic, 'logic'); // 1

let logic1 = 0;
logic1 &&= 1;
console.log(logic1, 'logic'); // 0

let logic2 = 0;
logic2 ??= 1;
console.log(logic2, 'logic2'); // 0

let logic3 = null;
logic3 ??= 1;
console.log(logic3, 'logic3'); // 1

https://blog.csdn.net/weixin_37352936/article/details/110138808