多个if语句是否连续执行?

时间:2016-06-05 00:13:26

标签: javascript

我有很多if语句应该在左键或右键按下时触发。但是当我向左击时,它只是在所有if语句上执行左键按键,即使每个语句都有条件。

var currentBranch = 1;


if ((currentBranch == 1) && (keyPressed[key.left] == true)){
        background.image.src = treeStructure[0][0];
        currentBranch = 3;  
        console.log(currentBranch);         
    } else if ((currentBranch == 1) && (keyPressed[key.right] == true)) {
        background.image.src = treeStructure[0][1];
        currentBranch = 2;
        console.log(currentBranch);
    }       
    if ((currentBranch == 3) && (keyPressed[key.left] == true)){
        background.image.src = treeStructure[1][0];
        currentBranch = 4;
        console.log(currentBranch);
    } else if ((currentBranch == 3) && (keyPressed[key.right] == true)) {
        background.image.src = treeStructure[1][1];
        currentBranch = 9;
        console.log("hello");
        console.log(currentBranch);
    }
    if ((currentBranch == 4) && (keyPressed[key.left] == true)){
        background.image.src = treeStructure[2][0];
        currentBranch = 6;
        console.log(currentBranch);
    } else if ((currentBranch == 4) && (keyPressed[key.right] == true)) {
        background.image.src = treeStructure[2][1];
        currentBranch = 5;

对于新的按键,不应该在每个if语句之后将currentBranch变量停止吗?

1 个答案:

答案 0 :(得分:2)

如上所述,你的代码实际上是3个单独的if ... else if ... blocks,而不是一组chained if blocks。这意味着他们的真实性"将被单独评估,而不是在评估为真之后爆发。

第一个"如果......" block计算结果为true,然后在该块内部设置变量" currentBranch"到3,这会导致下一个if块评估为true,依此类推。

您需要将代码结构更改为:

if (statement) {
  //code
}
else if (statement) {
  //code
}
else if (statement) {
  //code
}
else if (statement) {
  //code
}
else if (statement) {
  //code
}
else if (statement) {
  //code
}

这样,一旦一个块评估为真,就不会评估较低的块。