??)用来判断左侧内容是否为null或undefined。如果为null或undefined则返回左侧内容,否者返回右侧内容。
||)的区别逻辑或运算符是一个布尔逻辑运算符,会把左侧容转换成布尔值,任何假值(0,'',NaN,null,undefined)都不会被返回。
如果想定义这些假值为初始值的话,应该使用空值合并运算符(??)
?.)允许读取位于连接对象链深处的属性的值,而不必明确验证链中的每个引用是否有效。在引用的值为空(null,undefined不报错)或者引用函数不存在的时候返回undefined。
当尝试访问可能不存在的对象属性时,可选链运算符将会使表达式更短、更简明。