?? : 只有左侧的值为null或undefined的时候才使用右侧的值。
?. : 就是判断对象的某个属性是否存在,如果存在那么就返回整个属性的值,否则返回undefined
a() && b() :
执行a()后返回true,则执行b()并返回b的值;
执行a()后返回false,则整个表达式返回a()的值,b()不执行;
a() || b() :
执行a()后返回true,则返回a()的值,b()不执行;
执行a()后返回false,则执行b()并返回b()的值;
?? : 只有左侧的值为null或undefined的时候才使用右侧的值。
?. : 就是判断对象的某个属性是否存在,如果存在那么就返回整个属性的值,否则返回undefined
a() && b() :
执行a()后返回true,则执行b()并返回b的值;
执行a()后返回false,则整个表达式返回a()的值,b()不执行;
a() || b() :
执行a()后返回true,则返回a()的值,b()不执行;
执行a()后返回false,则执行b()并返回b()的值;