0

我目前正在学习 Javascript。我看过下面的代码,这让我很困惑。

代码描述:
从第 1 行开始,函数 isOdd 接受一个数字 n 并返回一个布尔值(真或假),说明该数字是否为奇数。

代码

var isOdd = function (n) {
      if (n % 2 === 0) {
        return false;
      } else {
        return true;
      }
    };

    var isEven = function(n) {
        if(n % 2 === 0) {
            return true;
        } else {
            return false;
        }
    };

我感到困惑的地方。
编码:

n % 2 === 0

我一直将以下内容作为 % 的描述:

% Is the modulus operator. It returns the remainder of dividing number1 by number2.

这意味着函数 isOdd 中的 if 语句返回 false 是 n 和 2 之间的差为 0。但它的意思是如果 n 可被 2 整除(偶数)返回 false。

我只是不明白它是如何做到的。

在我看来,如果我们取偶数 30。将其应用于 n % 2。我们得到 15,这是 30 除以 2 的余数。15 不等于 0,但 30 是偶数,并且使用此代码会被视为奇怪。

有人可以解释一下吗?

4

3 回答 3

3

有问题的行:

  if (n % 2 === 0) {
    return false;
  }

意思是“如果你将 n 除以 2 余数为零,则返回 false(即 n 不是奇数)”。

“余数”是减去最接近的倍数时剩下的,例如“64 % 10”是 4,因为 10 的最接近倍数是 60,剩下 4。

以你的例子,换一种说法,30/2 是 15,30%2 是零(即 30/2 之后剩下的任何东西)。这是有关除法后剩余部分的更多信息。

于 2012-04-18T10:16:28.583 回答
1

你混淆了QuotientRemainder。当您将 30 除以 2 时,整数商为 15,余数为 0。您还可以通过将整数商乘以除数并从被除数中减去它来计算余数。所以这个除法的余数是 30(除数)- 15(商)* 2(除数)= 0。

于 2012-04-18T10:32:15.163 回答
0

如果 n 可以除以 2,则表示它是偶数 ->
表示它不是奇数 ->
isOdd 为假

于 2012-04-18T10:17:20.940 回答