0

私は現在Javascriptを学習中です。そして、私は混乱する次のコードを見てきました。

コードの説明:
1 行目から始まる関数 isOdd は、数値 n を取り、その数値が奇数かどうかを示すブール値 (true または false) を返します。

コード

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 に適用します。30 を 2 で割った余りが 15 になります。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

あなたは剰余を混同しています。30を2で割ると、整数の商は15、余りは0になります。整数の商に除数を掛け、それを被除数から引くことによって余りを計算することもできます。したがって、この除算の余りは30(被除数)-15(商)* 2(除数)=0です。

于 2012-04-18T10:32:15.163 に答える
0

n が 2 で割り切れる場合、それは偶数であることを意味します -> つまり
、奇数ではないことを意味します ->
isOdd は false

于 2012-04-18T10:17:20.940 に答える