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

why does it skip and continue even if the first if statement is true

本文关键字:继续 第一个 if 语句 为什么      更新时间:2023-09-26

您可以立即看到这是一个for循环,这里有一些if条件(这就是您所说的"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("FizzBuzz");有人能给我解释一下吗?

 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);
        }
    }

我测试了你的代码,没有得到你描述的输出,15成功打印"FizzBuzz"。我得到的预期结果是15显示为"Fizz"。它不能正常工作,因为它没有机会到达最后的if语句来打印15的"FizzBuzz"。一个简单的解决办法是,当一个数能被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
    }
}

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

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