理解switch中的表达式

时间:2014-12-06 06:19:40

标签: javascript

考虑以下脚本:

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。如果这个推理是正确的,为什么我收到消息“不,不发生”?

请解释。

3 个答案:

答案 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

查看我的fiddledocumentation

答案 2 :(得分:0)

(X + 1)== 2返回true而不是1.在case case中使用值。