2012-04-18 53 views
0

我目前正在学习Javascript。我看到了下面的代码,这让我很困惑。的代码使用%模数理解此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. 

这将意味着if语句中ISODD返回false功能之间的区别n和2是0.但它的意思是如果n可以被2整除(偶)返回false。

我只是不知道它是如何做到这一点。

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

有人可以解释这一点吗?

+0

“if语句在函数isOdd返回false _is之间的差值为2_”它并不意味着差异是0(这意味着它们是相同的数字)。这意味着除数n/2的其余部分为0;)我希望能够帮助 – DiogoNeves 2012-04-18 10:19:43

+0

谢谢,请参阅更新 – RSM 2012-04-18 10:20:37

+0

30%2为零,即在30/2(30除以2为15)后剩下的值。 – Tom 2012-04-18 10:23:31

回答

3

在考虑中的线:

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

手段“如果当您除以2 n中的余数是零,则返回假(即n不是奇数)”。

“剩女”是当你减去最接近的整数倍无论是遗留下来的,因此,例如“64%10”是4,自从10的最接近倍数为60,留下4

以你的榜样换句话说,30/2是15,30%2是零(即30/2后剩下的)。这里有更多关于remainder的信息。

+0

...以及与0相同的类型。 – 2012-04-18 10:17:03

+1

谢谢Sani!对于其他人来说,三等于增加了相同的类型要求(完全相等)。 – Tom 2012-04-18 10:20:33

+0

查看更新..... – RSM 2012-04-18 10:21:00

0

如果n可以除以2,就意味着它甚至 - >
这意味着它并不奇怪 - >
ISODD是假

+0

查看更新..... – RSM 2012-04-18 10:21:49

1

你混淆QuotientRemainder。 将30除以2时,整数商数为15,余数为0.您还可以通过将整数商数除以除数并从除数中减去来计算余数。因此,对于此除法余数为30(除数) - 15(商)* 2(除数)= 0。