为什么即使第一个if语句为真,它也会跳过并继续

时间:2013-03-08 16:52:22

标签: javascript if-statement nested-loops

正如你可以立即看到这是一个for循环,其中有一些if条件就在这里(是你所说的“如果条件”???)。 我实际上有两个问题。

我正在开发CodeAcademy,它已经让我这样做了:

Print out the numbers from 1 - 20.
The rules:
For numbers divisible by 3, print out "Fizz".
For numbers divisible by 5, print out "Buzz".
For numbers divisible by both 3 and 5, print out "FizzBuzz" in the console.
Otherwise, just print out the number.**

这是我到目前为止所做的,我认为它的工作正确并且一般都是正确的,但是CodeAcademy并没有说它。我想知道是否有人知道我的代码是否有问题,或者这只是一种不同的方式来完成他们要求的确切事情(参考上述规则)。

还有第二个问题,这更像是我的好奇问题。如果我们现在以15为例。 JavaScript遇到15时如何思考。 如果15可以被3分割并且剩下0,那么它不应该是console.log(“Fizz”),而不是一直到最近的底部代码和console.log(“FizzBu​​zz”); 有人可以向我解释一下,pleeaassee:)

 for (var iterator = 1; iterator <= 20; iterator = iterator + 1) {
        if (iterator % 3 === 0) {
            console.log("Fizz");

        } else if (iterator % 5 === 0) {
            console.log("Buzz");

        } else if (iterator % 3 === 0) {
            if (iterator % 5 === 0) {
                console.log("FizzBuzz");
            }
        } else {
            console.log(iterator);
        }

    }

2 个答案:

答案 0 :(得分:2)

我测试了你的代码并且没有得到你描述的输出,15成功打印“FizzBu​​zz”。我得到15的预期结果显示为“Fizz”。它没有正常工作,因为它没有机会到达最终的if语句打印出15的“FizzBu​​zz”。一个简单的解决方法是当数字可以被3整除时检查可分性5。

for (var iterator = 1; iterator <= 20; iterator = iterator + 1) {
    if (iterator % 3 === 0) {
        if (iterator % 5 === 0) {
            console.log("FizzBuzz"); //divisible by 3 and 5
        } else {
            console.log("Fizz"); //only divisible by 3
        }
    } else if (iterator % 5 === 0) {
        console.log("Buzz"); //only divisible by 5
    } else {
        console.log(iterator); //not divisible by 3 or 5
    }
}

答案 1 :(得分:-1)

它可能会给你解决方案: 只需重新排列代码:

for (var iterator = 1; iterator <= 20; iterator = iterator + 1) {

   if (iterator % 3 === 0) {
       if (iterator % 5 === 0) {
            console.log("FizzBuzz");
        }
    }else if (iterator % 3 === 0) {
        console.log("Fizz");

    } else if (iterator % 5 === 0) {
        console.log("Buzz");

    } else {
        console.log(iterator);
    }

}

首先检查条件是否满足可被3和5整除。 之后分别检查3和5。