我有一个开关,如果Javascript出现问题,代码就会跟随。
var a=0;
if(a){
console.log("a is true");
} else if(!a) {
console.log("a is false");
} else {
console.log("a is not true or false");
}
switch(a){
case true:
console.log("switch... a is true");
break;
case false:
console.log("switch... a is false");
break;
default:
console.log("switch... a is not true or false");
}
当我运行上面的代码时,我在控制台中得到了结果,这让我很困惑:
a is false
switch... a is not true or false
我认为应该是这样的:
a is false
switch... a is false
有谁知道为什么会这样?非常感谢任何答案。
答案 0 :(得分:4)
如果(!0)评估为真。一般来说,如果将评估为真,则存在任何非零的规则,反之亦然。
但是对于switch 0,将根据case值显式检查,0既不是true也不是false,因此默认语句被执行。
答案 1 :(得分:1)
0既不是真也不是假,但它是!a
答案 2 :(得分:1)