我刚刚做了 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
,控件将永远不会输入组合的“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
。