具有不同类型的逻辑运算符

时间:2017-12-07 22:45:46

标签: javascript loops logical-operators console.log

我正在尝试解决着名的 FizzBu​​zz 测验,但我决定使用逻辑运算符而不是 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”而不是“FizzBu​​zz”,以便可以被3和5整除。

但它没有打印任何数字。

3 个答案:

答案 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的答案是正确的,但是为了曝光,这是我的答案

&#13;
&#13;
for (var i = 1; i <= 100; i++) {
  var output = "";
  if (!(i % 3)) output += "Fizz";
  if (!(i % 5)) output += "Buzz";
  console.log(output || i);

}
&#13;
&#13;
&#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而不是FizzBu​​zz。

如果输出我们将其设置为原始的空字符串,output || i将返回output的值,为我们提供&#34; Fizz&#34;, &#34; Buzz&#34;或者&#34; FizzBu​​zz&#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);
}