我正在尝试解决着名的 FizzBuzz 测验,但我决定使用逻辑运算符或而不是 else 来提供后卫。
for (var num = 1; num <= 100; num++) {
var output;
if (num % 5 === 0 && num % 3 === 0) {
output = "FizzBuzz";
} else if (num % 5 === 0) {
output = "Buzz";
} else if (num % 3 === 0) {
output = "Fizz";
}
console.log(output || num);
}
这应该打印从1到100的所有数字,但有一些例外。对于可被3整除的数字,打印“Fizz”而不是数字,对于可被5整除的数字,请打印“Buzz”而不是“FizzBuzz”,以便可以被3和5整除。
但它没有打印任何数字。
答案 0 :(得分:3)
output
声明可能是num
,如:
var output = num;
因此,您不必使用||
运算符,只需直接打印output
:
console.log(output);
for (var num = 1; num <= 100; num++) {
var output = num;
if (num % 5 === 0 && num % 3 === 0) {
output = "FizzBuzz";
} else if (num % 5 === 0) {
output = "Buzz";
} else if (num % 3 === 0) {
output = "Fizz";
}
console.log(output);
}
答案 1 :(得分:2)
我会说Zakaria的答案是正确的,但是为了曝光,这是我的答案
for (var i = 1; i <= 100; i++) {
var output = "";
if (!(i % 3)) output += "Fizz";
if (!(i % 5)) output += "Buzz";
console.log(output || i);
}
&#13;
我的逻辑:
将输出值设置为等于""
,其值为falsey值。
如果数字 可被3整除,那么i % 3
将为0,这也是一个假值,因此我们使用!
运算符将其翻转。假设i=9
,然后! (i%3)
= !(9%3)
= !(0)
= !(false)
= true
。
因此,如果!(i%3)
变为真,我们将空字符串附加&#34; Fizz&#34;,然后我们对i%5
使用相同类型的逻辑,而是附加&#34;巴斯&#34;
注意这两个if语句的顺序很重要 - 翻转它们,你将获得BuzzFizz而不是FizzBuzz。
如果输出不我们将其设置为原始的空字符串,output || i
将返回output
的值,为我们提供&#34; Fizz&#34;, &#34; Buzz&#34;或者&#34; FizzBuzz&#34;根据
如果输出 为空,则output || i
将返回i
的值
希望这有助于进一步理解Javascript!
答案 2 :(得分:1)
使用let
修复output
的范围:
for (var num = 1; num <= 100; num++) {
let output;
if (num % 5 === 0 && num % 3 === 0) {
output = "FizzBuzz";
} else if (num % 5 === 0) {
output = "Buzz";
} else if (num % 3 === 0) {
output = "Fizz";
}
console.log(output || num);
}
此外,如果您使用||
初始化output
,则可以删除num
:
for (var num = 1; num <= 100; num++) {
let output = num;
if (num % 5 === 0 && num % 3 === 0) {
output = "FizzBuzz";
} else if (num % 5 === 0) {
output = "Buzz";
} else if (num % 3 === 0) {
output = "Fizz";
}
console.log(output);
}