Javascript 为什么我的FizzBuzz代码输出不正确? 功能计数器(numOne、numTwo){ 对于(让i=0;i

Javascript 为什么我的FizzBuzz代码输出不正确? 功能计数器(numOne、numTwo){ 对于(让i=0;i,javascript,fizzbuzz,Javascript,Fizzbuzz,好的,我不想写一个答案,但是因为你是新来的,我会用一种更有意义的方式来写: function counter(numOne, numTwo) { for (let i = 0; i <= 100; i++) { if (i % numOne === 0) { console.log("Fizz"); } if (i % numTwo === 0) { console.log("Buzz"); } if (i % numO

好的,我不想写一个答案,但是因为你是新来的,我会用一种更有意义的方式来写:

function counter(numOne, numTwo) {
  for (let i = 0; i <= 100; i++) {

    if (i % numOne === 0) {
      console.log("Fizz");
    }
    if (i % numTwo === 0) {
      console.log("Buzz");
    }
    if (i % numOne === 0 && i % numTwo === 0) {
      console.log("FizzBuzz");
    }
    else if (i <= 100 && i !== i % numOne === 0 || i !== i % numTwo === 0) {
      console.log(i);
    }
  }
}

counter(3, 5);
如上所述,这里有两个问题:

  • i!==i永远不可能是真的,它是相同的值,总是i==i,或者在您的情况下是假的
  • 由于上述为假,您将得到一个数学方程:false%numOne这将导致NaNNaN不等于0

  • 希望这个和上面的评论有助于理解您的问题

    您能解释一下:(i!==i%numOne===0导致:false%numOne==0,这是NaN==0,这永远不会是真的:)尝试将else if条件更改为
    (我欢迎堆栈溢出。注意,已经有(很多)Stack Overflow上提供的FizzBuzz问题/答案。与其发布另一个FizzBuzz问题,不如先在此处搜索现有问题,如果所有现有问题都无法帮助您(自己)找到答案,则只添加一个新的(您的)问题。(在这种情况下,您将链接到现有问题并解释区别).看一看。所以我基本上只需要调整else if,但为了进一步简化,我可以在变量中创建它们。知道这一点很好。在了解中间javascript之前,我还有很长的路要走!谢谢!有很多方法可以进行FizzBuzz挑战,但我之所以将它们指定给变量是因为当名称更有意义时,当您在多个位置使用相同(或相反)条件时,更容易理解逻辑。实际上,只有当numOne为0时,才更正我答案中的一小部分,因此(false%0)导致NaN,任何其他数字都等于0,但我不相信布尔值和数字之间的数学结果:)你会进入奇怪的臭虫领域!@Thomas你是对的,但我正在解决她所问的问题,这是else表达式。我会更新答案以显示正确的FizzBuzz行为,这样就不会混淆或误导任何人。@Cutecat42,请看你如何处理这个FizzBuzz而不需要最后一个“else if”
    
    function counter(numOne, numTwo) {
      for (let i = 0; i <= 100; i++) {
        const isFizz = i % numOne === 0
        const isBuzz = i % numTwo === 0
    
        if (isFizz && isBuzz) {
          console.log("FizzBuzz");
        }
        else if (isFizz) {
          console.log("Fizz");
        }
        else if (isBuzz) {
          console.log("isBuzz")
        }
        else {
          console.log(i);
        }
      }
    }
    
    counter(3, 5);
    
    i !== i % numOne === 0