js中??和||的区别

94 阅读1分钟
  1. ??:空值合并操作符, a??b,当a!=null或者a!=undefined时,取a否则取b

  2. ??=:逻辑空赋值, a??=b,仅在a为null或者undefined时,对其赋值

  3. ?.可选链操作符,允许读取位于连接对象链深处的属性值,不必验证链中的每个引用是否有效,类似于.链式操作符,不同之处在于,当引用为null或者undefine的时候不会引起错误,短路返回值是undefined,当尝试调用一个可能不存在的方法时也可以使用可选链,函数调用时如果被调用的方法不存在,使用可选链可以使表达式自动返回undefined而不是抛出一个异常。

  4. ||:逻辑或运算符,a||b,当a为(null,NAN,0,"",'',``,undefined)为false,就取b,不为前面那些值就取a