考虑以下脚本:
var x = 1;
switch (x) {
case ( ( x+1 ) == 2 ):
console.log("It works!");
break;
default:
console.log("Nope, not happening.");
break;
}
现在,我已经读过评估case
内的表达式,然后将其与变量进行比较。此处,由于x
为1,( x+1 ) == 2
的评估结果为TRUE
。此外,x
(最初为1)的值相当于TRUE
。如果这个推理是正确的,为什么我收到消息“不,不发生”?
请解释。
答案 0 :(得分:2)
这样做:
var x = 1;
switch (x + 1) {
case 2:
console.log("It works!");
break;
default:
console.log("Nope, not happening.");
break;
}
答案 1 :(得分:1)
您没有正确阅读switch
声明的签名。它switch (x)
要求表达式x
,而case y
要求值y
。
查看我的fiddle和documentation。
答案 2 :(得分:0)
(X + 1)== 2返回true而不是1.在case case中使用值。