1

我刚刚做了嘶嘶声测试,但我的做法与下面的答案不同。我将第一个“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);
      }
}
4

1 回答 1

3

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

例如:假设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.

于 2014-08-04T22:11:33.887 回答