不同类型的逻辑运算符
Logical operator with different types
我正在尝试解决著名的 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 整除的数字。
但它不打印任何数字。
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);
}
使用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);
}
此外,如果您使用 num
初始化 output
:
,则可以删除 ||
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);
}
我会说 Zakaria 的回答是正确的,但为了曝光,这是我的回答
for (var i = 1; i <= 100; i++) {
var output = "";
if (!(i % 3)) output += "Fizz";
if (!(i % 5)) output += "Buzz";
console.log(output || i);
}
我的逻辑是:
将输出值设置为等于 ""
,计算结果为假值。
如果一个数能被3整除,那么i % 3
就是0,这也是一个假值所以我们用[=13=翻转它] 操作员。假设i=9
,那么! (i%3)
= !(9%3)
= !(0)
= !(false)
= true
.
因此,如果 !(i%3)
变为真,我们会在空字符串后附加“Fizz”,然后我们对 i%5
使用相同的逻辑,但会附加“Buzz”
注意这两个 if 语句的顺序很重要——将它们翻转过来,您将得到 BuzzFizz 而不是 FizzBuzz。
如果输出不是我们最初设置的空字符串,output || i
将return output
的值,给我们“Fizz”、“Buzz”或“FizzBuzz”,具体取决于。
如果输出 为空,则 output || i
将 return i
的值
我正在尝试解决著名的 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 整除的数字。
但它不打印任何数字。
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);
}
使用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);
}
此外,如果您使用 num
初始化 output
:
||
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);
}
我会说 Zakaria 的回答是正确的,但为了曝光,这是我的回答
for (var i = 1; i <= 100; i++) {
var output = "";
if (!(i % 3)) output += "Fizz";
if (!(i % 5)) output += "Buzz";
console.log(output || i);
}
我的逻辑是:
将输出值设置为等于 ""
,计算结果为假值。
如果一个数能被3整除,那么i % 3
就是0,这也是一个假值所以我们用[=13=翻转它] 操作员。假设i=9
,那么! (i%3)
= !(9%3)
= !(0)
= !(false)
= true
.
因此,如果 !(i%3)
变为真,我们会在空字符串后附加“Fizz”,然后我们对 i%5
使用相同的逻辑,但会附加“Buzz”
注意这两个 if 语句的顺序很重要——将它们翻转过来,您将得到 BuzzFizz 而不是 FizzBuzz。
如果输出不是我们最初设置的空字符串,output || i
将return output
的值,给我们“Fizz”、“Buzz”或“FizzBuzz”,具体取决于。
如果输出 为空,则 output || i
将 return i