为什么我的if / else语句不能正常工作?

时间:2015-02-25 20:41:23

标签: javascript arrays loops

我正在尝试迭代数字变量中的数组,如果一个数字可以除以3我记录" fizz",如果它可以除以5 I&#39 ; m记录" buzz",如果一个数字可以除以3 + 5或15,我记录" fizzbuzz"

以下是工作代码:

var numbers = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20];
for (var i = 1; i <= numbers.length; i++) {  
    if (i % 15 === 0) {
        console.log("FizzBuzz");
    } else if (i % 5 === 0) {
        console.log("Buzz");
    } else if (i % 3 === 0) {
        console.log("Fizz");
    } else {
        console.log(i);
    }
};

这是我的原始代码,它没有记录&#34; fizzbuzz&#34;

var numbers = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20];
for (var i = 1; i <= numbers.length; i++) {      
    if (i % 5 === 0) {
        console.log("Buzz");
    } else if (i % 3 === 0) {
        console.log("Fizz");
    } else if (i % 15 === 0) {
        console.log("FizzBuzz");
    } else {
        console.log(i);
    }
};

为什么(i%15 === 0)条件需要先于其他两个条件?不管不重要吗?

3 个答案:

答案 0 :(得分:3)

数字15可以被3和5整除。如果你不先测试它,那么你永远不会到达那里。

所以让我们以30为例。如果你先检查15,你会发现它可以被15整除。但是,如果先检查5或3,它将被标记为可被任何一个整除。

答案 1 :(得分:0)

在您的一个条件评估为true之后,您将跳出该if-block并且不评估else-if / else语句。如果你想让其他人评估你可以使用if语句而不是else-if。

答案 2 :(得分:0)

这是因为首先计算机检查第一个语句,然后在使用ELSE IF时检查其他语句,这意味着在第一个语句错误后检查语句。改为使用IF。