代码之家  ›  专栏  ›  技术社区  ›  Moaaz Bhnas

不同类型的逻辑运算符

  •  2
  • Moaaz Bhnas  · 技术社区  · 6 年前

    我想解决著名的 嘶嘶作响 但我决定使用逻辑运算符 而不是 其他的 提供后卫。

    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整除的数字。

    但它不会打印任何数字。

    3 回复  |  直到 6 年前
        1
  •  3
  •   halfer Rahul Baradia    6 年前

    这个 output 声明可以是 num 例如:

    var output = num;
    

    所以你不必使用 || 操作员只需打印 输出 直接:

    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);
    }
        2
  •  2
  •   Zoe - Save the data dump Rakesh Patil    2 年前

    我会说扎卡里亚的回答是正确的,但为了曝光起见,这是我的答案

    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,这也是一个假值,因此我们使用 ! 操作人员假设 i=9 然后 ! (i%3) = !(9%3) = !(0) = !(false) = true .

    因此,如果 !(i%3) 如果我们在空字符串后面加上“Fizz”,那么我们使用相同的逻辑 i%5 而是附加了“嗡嗡声”

    笔记 这两条if语句的顺序很重要——将它们翻过来,你会得到BuzzFizz而不是FizzBuzz。

    如果输出为 我们最初设置为的空字符串, output || i 将返回的值 output ,给我们“嘶嘶”、“嗡嗡”或“嘶嘶嗡嗡”取决于。

    如果输出 空的,那么 输出|| i 将返回的值 i

        3
  •  1
  •   falsarella Pixelomo    6 年前

    使用 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 :

    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);
    }