js中的短路与、短路或中的空字符串和 undefined
js中的短路与、短路或中的空字符串和 undefined
写在前面:
- 在js中,|| 和 && 不保证返回布尔值
- 可以转化为 false 的表达式有:null、NaN、0、空字符串、undefined。就是说你用 if 条件判断的话,它们都是 false,不论在哪里
举个栗子
-
在 && 中
console.log(('' && undefined)); //空字符串 console.log((undefined && '')); //undefined console.log(('' && true)); //空字符串 console.log(('' && false)); //空字符串 console.log((undefined && true)); //undefined //不知道你发现没有,其实,空字符串和undefined一直扮演着false的角色,只是输出的时候,不输出false,而是输出它本身
-
在 || 中
console.log(('' || undefined)); //undefined console.log((undefined || '')); //空字符串 console.log(('' || true)); //true console.log(('' || false)); //false console.log((undefined || true)); //true console.log((undefined || true)); //true //与上面同理
-
另外三个
console.log((NaN || false)); //false console.log((null || false)); //false console.log((0 || false)); //false //与上面同理
结论
它们就是 false,只不过空字符串和undefined有一点点特殊,它们输出的时候输出它们自身,其它都是输出 false
这一路,灯火通明