我刚刚做了 fizz buzz 测试,但我做的与下面的答案不同。我将第一个“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,控件将永远不会输入组合的“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); 
} 

您的输出将是 FizzBu​​zz。但是,如果您将合并的 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


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!