对于fizz buzz,if-else语句中的排序是否重要?

时间:2014-08-04 22:08:32

标签: javascript fizzbuzz

我刚刚做了fizz嗡嗡声测试,但我的答案与以下答案不同。我将第一个“if”语句(即i%3===0 && i%5===0)作为我的最后一个“else if”语句而不是由于某种原因它不起作用。然而,我的逻辑是一样的。

有谁知道为什么它不起作用?你为if,else语句放置哪个位置真的很重要吗?以下是答案的关键。

for(var i = 1; i < 100; i++){
      if(i%3 === 0 && i%5 === 0){
        console.log("FizzBuzz");
      }
      else if(i%3 === 0) {
        console.log("Fizz");
      }
      else if(i%5 === 0){
        console.log("Buzz");
      }
      else {
        console.log(i);
      }
}

这是我的回答:

for(var i = 1; i < 100; i++){
     if (i%5 === 0){
        console.log("Buzz");
      }
      else if(i%3 === 0) {
        console.log("Fizz");
      }
      else if (i%3 === 0 && i%5 === 0){
        console.log("FizzBuzz");
      }
      else {
        console.log(i);
      }
}

1 个答案:

答案 0 :(得分:3)

如果您将if (i%3 === 0 && i%5 === 0)作为链中的最后一个if,则只会输入一个之前的分支 - 即if (i%3 === 0)if (i%5 === 0)。由于您使用的是else if,因此控件永远不会输入合并的“FizzBu​​zz”if

例如:让我们说i = 15。如果您有以下代码:

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

您的输出将为FizzBuzz。但是,如果将合并的if移动到最后,请执行以下操作:

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

然后您的输出将只有Fizz,因为i%3 === 0