ES2020

可选链操作符(Optional Chaining)

  1. person?.addr?.province

mdn 的解释
image.png

练习

  1. const obj = {
  2. person:{
  3. addr:{
  4. province :"adfs",
  5. }
  6. }
  7. }
  8. console.log(obj?.person?.addr?.province) // 当obj不存在时赋值为undefined
  9. console.log(obj.person.addr.province)

控制台打印效果
image.png

  1. const obj = {
  2. peron:{ //此处修改名字使其下面的代码报错
  3. addr:{
  4. province :"adfs",
  5. }
  6. }
  7. }
  8. console.log(obj?.person?.addr?.province) // 当obj不存在时赋值为undefined
  9. console.log(obj.person.addr.province

控制台打印效果
image.png
从控制台打印效果来看,第一个输出语句没有识别到该属性会自动复制为undefined,第二个输出语句直接报错

空位合并操作符(Nullish coalescing Operator)

mdn 的解释
image.png

  1. a ?? b
  2. // 等同于
  3. a === undefined ? b : a

练习

  1. const foo = null ?? 'default string';
  2. console.log(foo);
  3. // 等效于下面的代码
  4. const fo = null;
  5. fo === null ? "default string" : fo;
  6. console.log(fo === null ? "default string 2" : fo)

控制台打印效果
image.png