TS实用技巧:?? 控制合并运算符

??空值合并运算符

判断非空时非常好用

1. 当左侧操作数为null或者undefined时,返回右侧的操作数,否则返回左侧的操作数,与||不同的是,逻辑或会在左侧操作数为falsy时(如:“”,0)返回右侧操作数,此时如果对空字符串或者0有意义时使用空值合并运算符会省去es5中的很多判断

 
  1. const data1 = 0

  2. // 如果data1是undefined或者null,data2=100

  3. const data2 = data1 ?? 100

  4. // es5实现

  5. const data2 = data1===undefined || data1===null ? 100 : data1

可用于短路,当空值合并运算符的做表达式不是null或者undefined时,不会对右侧表达式进行求职

 
  1. function A() { console.log('A was called'); return undefined;}

  2. function B() { console.log('B was called'); return false;}

  3. function C() { console.log('C was called'); return "foo";}

  4. console.log(A() ?? C());

  5. console.log(B() ?? C());