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();
}
答案 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语句,这些语句彼此无关,除了一个是真的,其背后的所有其他语句都是正确的。
如果你不打算在 OP澄清他确实打算让所有人都跑。numberHands
等于3的情况下运行它们,那么switch/case
结构更合适,更具可读性:
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();
}