在fizz buzz的if-else语句中排序重要吗?

Does ordering matter in if-else statements for fizz buzz?

本文关键字:排序 语句 fizz buzz if-else      更新时间:2023-09-26

我只是做了气泡嗡嗡声测试,但我的方法不同于下面的答案。我把第一个"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);
      }
}

如果您将if (i%3 === 0 && i%5 === 0)作为链中的最后一个if,那么只有一个先前的分支将被输入-即if (i%3 === 0)if (i%5 === 0)。由于您使用的是else if s,控制将永远不会输入组合的"FizzBuzz"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 .