编写嵌套if语句的正确方法?

时间:2013-12-24 16:36:14

标签: javascript nested-if

numberHands将等于1,2, or 3。如果没有,它将永远不会在计划中如此遥远。所以我认为没有其他说法的理由。

但是,这是在JavaScript中编写嵌套if语句的正确语法吗?我觉得结束括号不正确,但我是js的新手。你会怎么写这个?

function recap() {
    if (numberHands > 0) {
        wonOrLost(h1.cards, h1);
    }
        if (numberHands > 1) {
            wonOrLost(h2.cards, h2);
        }
            if (numberHands > 2) {
                wonOrLost(h3.cards, h3);
            }
    playAgainOption();
}

5 个答案:

答案 0 :(得分:2)

你是对的,右边的括号是错误的。您正在寻找的是

function recap() {
    if (numberHands > 0) {
        wonOrLost(h1.cards, h1);
        if (numberHands > 1) {
            wonOrLost(h2.cards, h2);
            if (numberHands > 2) {
                wonOrLost(h3.cards, h3);
            }
        }
    }
    playAgainOption();
}

注意

这在功能上与您目前的相同。

答案 1 :(得分:2)

试一试......

function recap() {
    switch(numberHands) {
        case 3:
            wonOrLost(h3.cards, h3);
        case 2:
            wonOrLost(h2.cards, h2);
        case 1:
            wonOrLost(h1.cards, h1);
    }
    playAgainOption();
}

看起来这些函数执行的顺序无关紧要,只要它们都被调用即可。对我来说,这种解决方案感觉更优雅。

祝你好运!

答案 2 :(得分:1)

嗯,它不是嵌套的,但它仍然会以相同的方式工作。那是因为

  • 如果numberHands > 1那么它的定义也是> 0
  • 如果numberHands > 2那么它定义为> 1> 0

嵌套if语句的正确语法是

if (condition) {
    doSomething();
    if (anotherCondition) {
        doSomethingElse();
        if (aThirdCondition) {
            doSomethingDifferent();
        }
    }
}

在你的情况下,你有几个单独的if语句,这些语句彼此无关,除了一个是真的,其背后的所有其他语句都是正确的。


如果你不打算在numberHands等于3的情况下运行它们,那么switch/case结构更合适,更具可读性: OP澄清他确实打算让所有人都跑。

switch (numberHands) {
    case 1:
        wonOrLost(h1.cards, h1);
        break;
    case 2:
        wonOrLost(h2.cards, h2);
        break;
    case 3:
        wonOrLost(h3.cards, h3);
        break;
}

答案 3 :(得分:1)

这不是嵌套的if语句,但如果您计划添加更多条件,它肯定是另一种选择。

var list = [h1,h2,h3];
for (var i = 0; i < numberHands; i++) {
    wonOrLost(list[i].cards, list[i]);
}

答案 4 :(得分:0)

我不知道你是不是习惯用降价编辑器写的,但这是错误的缩进。

function recap() {
    if (numberHands > 0) { // 1 or more
        wonOrLost(h1.cards, h1);
        if (numberHands > 1) {
            wonOrLost(h2.cards, h2); // 2 or more
        }
        if (numberHands > 2) {
            wonOrLost(h3.cards, h3); // 3 or more
        }
    }
    playAgainOption();
}