关于js中的各种数据参与逻辑运算的结果
/* 逻辑运算符 && || !
在JavaScript中参与逻辑运算符的可以是任意类型的数据
所有 ‘非0,非null,非undefined,非NaN,非空字符串,非false’ 的数据,逻辑运算的时候都可以将其理解为true
遇到两侧不是具体的boolean值的时候,会按照短路运算符的规律将最后参与运算的某侧数据作为逻辑运算的结果
而!只能返回true或者false
*/
console.log(10 && 3);// 两侧都相当于true,会将最后运算的3作为结果
console.log(10 || 3);// 两侧都相当于true,但是由于短路了,将10作为返回结果
console.log(0 && 3);// 短路,结果为0
console.log(0 || 3);// 结果为3
console.log(NaN || 3);// NaN可以视为false , 结果为右侧结果3
console.log(NaN && 3);// 短路,结果为左侧NaN
console.log(undefined || null);// 结果为右侧null
详细的参见w3School中的第一列和第四列,如下图(红色的为出乎意料的结果)