为什么我的 FizzBu​​zz 代码输出不正确?

Why is my FizzBuzz code not outputting correctly?

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

对于 else if 循环,它应该 console.log 所有 <=100 但不是 i % numOne === 的数字0i % numTwo === 0。那么为什么只有 FizzBuzzFizzBu​​zz 出现在输出中?

好吧,我不想写答案,但既然你是新来的,我会用更有意义的方式来回答:

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

如上所述,这里有两个问题:

  1. i !== i 永远不可能是 true,它是相同的值,总是 i == = i 或者你的情况 false
  2. 由于以上为假,您将得到一个数学方程式:false % numOne 这将导致 NaNNaN 不等于 0

希望以上内容和评论有助于理解您的问题