2012-04-18 66 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。