语法糖 ?, ??

  • ?.

?,解决了 const value = a&&a.b&&a.b.c的问题
也就是当 不确定a是一个对象的时候,防止报 b of undefind的错误
因此 有了 ?.

  1. //
  2. const a = 1 ;
  3. console.log(a?.b) // undefined 但不会报错
  4. console.log(a?.b?.c) // undefined 但不会报错
  5. const a2 = {b:1}
  6. console.log(a2?.b) // 1
  7. console.log(a?.b?.c) // undefined 但不会报错
  • ??

?? 是为了解决不能用 || 的场景
因为 a || b, 当a == false的时候,会取b的值;
而有些时候我们希望,只要a是有值的,就取a的值,而不是b;
那么 就可以用到 ??

  1. const a = '';
  2. const b = 44;
  3. console.log(a||b); // 44
  4. console.log(a??b); // ''

扩展Promise的方法

Promise.allsettled 解决了 Promiss.all的api缺陷(Promise类篇有详解);

BigInt

新增的数据类型;
JavaScript 中 Number 类型只能安全的表示-(2^53-1)2^53-1 范的值,即 Number.MIN_SAFE_INTEGERNumber.MAX_SAFE_INTEGER,超出这个范围的整数计算或者表示会丢失精度。

新增了BigInt类型,解决了这一问题