尝试使用 var 而不是数字来简化 javascript。我这样做是不是错了?

Trying to simplify javascript with var instead of numbers. Am I going about this all wrong?

我正在尝试让我的 FizzBu​​zz 使用变量模数进行计算以简化代码。他们应该数到 140,显示 True 或 False。

我之前的 'if' 语句看起来像这样(并且有效):

if (i % 3 === 0 && i % 5 === 0)

我看到的例子是这样的:

if (checkDivision(iCounter, secondDivisor))

我已经为计数器、两个除数和模数检查器创建了变量,但我似乎无法让它工作。

感谢任何帮助,因为我对 javascript 和一般编码仍然很陌生。

到目前为止,这是我的代码:

    function clickAlert2() {
  var firstDivisor = 3;
  var secondDivisor = 5;
  for (var iCounter = 1; iCounter <= 140; iCounter++) {
    var checkDivision =
      iCounter % firstDivisor === 0 || iCounter % secondDivisor === 0;
    if (checkDivision(iCounter, firstDivisor)) {
      document.getElementById("ngList").innerHTML +=
        checkDivision + ". True [3] <br>";
    } else if (checkDivision(iCounter, secondDivisor)) {
      document.getElementById("ngList").innerHTML +=
        checkDivision + ". True [5] <br>";
    } else {
      document.getElementById("ngList").innerHTML +=
        checkDivision + ". False <br>";
    }
  }
}

编辑---------------------------------------- ------------------------------

好吧,现在我唯一的问题是应该被 5 整除的数字显示为可以被 3 整除,而这显然是不可能的:

    function clickAlert2() {

  function checkDivision(counter) {

    var firstDivisor = 3,
      secondDivisor = 5;

    return (counter % firstDivisor === 0) || (counter % secondDivisor === 0);
  };

  for (var iCounter = 1; iCounter <= 140; iCounter++) {

    if (checkDivision(iCounter)) {
      document.getElementById("ngList").innerHTML +=
        iCounter + ". True [3] <br>";
    } else if (checkDivision(iCounter)) {
      document.getElementById("ngList").innerHTML +=
        iCounter + ". True [5] <br>";
    } else {
      document.getElementById("ngList").innerHTML +=
        iCounter + ". False <br>";
    }
  }
}

您的 checkDivision 是一个布尔变量,而不是一个函数。所以你只需将它作为 if 和 else if 语句中的表达式传递。

if(checkDivision){.....}

此外,对于 fizzbuzz,您可以制作这样的函数。

function fizzbuzz(num){
  if(num % 3 === 0 && num % 5 === 0)
     return "FizzBuzz";
  else if(num % 3 === 0)
     return "Fizz";
  else if(num % 5 === 0)
     return "Buzz";
  else return "none";
}

现在您可以通过比较此函数返回的字符串来准确了解它是 fizz、Buzz 还是 fizzbuzz

我可以从您的代码段中了解到您正在尝试检测 1 - 140 之间可被 3(firstDivisor) 和 5(secondDivisor) 整除的数字。您需要经过 1 -140 的循环和一个确定给定数字的函数 (checkDivision) 函数是可被 3 和 5 整除的数字。

function clickAlert2() {

  function checkDivision(counter, divisor) {

    return (counter % divisor === 0);
  };

  var firstDivisor = 3,
    secondDivisor = 5;

  for (var iCounter = 1; iCounter <= 140; iCounter++) {

    //check divsible by both divisors
    if (checkDivision(iCounter, firstDivisor) && checkDivision(iCounter, )) {
      document.getElementById("ngList").innerHTML +=
        iCounter + ". True [" + firstDivisor + " " + secondDivisor + "] <br>";
    }

    //check divible by first divisor
    else if (checkDivision(iCounter, firstDivisor)) {
      document.getElementById("ngList").innerHTML +=
        iCounter + ". True [" + firstDivisor + "] <br>";
    }
    //check divible by second divisor
    else if (checkDivision(iCounter, secondDivisor)) {
      document.getElementById("ngList").innerHTML +=
        iCounter + ". True [" + secondDivisor + "] <br>";
    }
    //cannot divisible either divisors
    else {
      document.getElementById("ngList").innerHTML +=
        iCounter + ". False <br>";
    }
  }
}

这是您要找的吗?

function clickAlert2() {
    var firstDivisor = 3;
    var secondDivisor = 5;
    var checkDivision = function (counter, divisor) {
        return counter % divisor === 0;
    };

    for (var iCounter = 1; iCounter <= 140; iCounter++) {
        if (checkDivision(iCounter, firstDivisor)) {
            document.getElementById("ngList").innerHTML +=
                iCounter + ". True [3] <br>";
        } else if (checkDivision(iCounter, secondDivisor)) {
            document.getElementById("ngList").innerHTML +=
                iCounter + ". True [5] <br>";
        } else {
            document.getElementById("ngList").innerHTML +=
                iCounter + ". False <br>";
        }
    }
}
clickAlert2()
<div id="ngList"></div>