我有一个开关,如果 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
有人知道为什么会这样吗?非常感谢任何答案。
最佳答案
If (!0) 计算结果为真。通常有一条规则,如果 if 中的任何非零值都将计算为真,反之亦然。
但是对于 switch 0 将根据 case 值显式检查并且 0 既不是 true 也不是 false ,因此 default 语句被执行。
关于javascript - 为什么 switch 和 if 语句在 Javascript 中对待 boolean 不同,困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16117274/