2016-03-30 15 views
0

私は0に、以下を追加しない13 & -13の間の値を返すように意図された次のコードビットを持っているが(私は以下のフルJsFiddleを含む)の質問にはJavaScriptのビットです:なぜ!== 0は0ではなく0に等しい値を返しますか?

$(document).ready(function() { 
    function GenerateRandomNumber() { 
    var min = -13, 
     max = 13; 
    var random = Math.floor(Math.random() * (max - min + 1)) + min; 
    return random; 
    } 
    var x = GenerateRandomNumber(); 

    function GenerateRandomNumber2() { 
    var min2 = -13, 
     max2 = 13; 
    var random2; 
    while ((random2 + x) !== 0) { 
     random2 = Math.floor(Math.random() * (max2 - min2 + 1)) + min2; 
    } 
    return random2; 
    } 
    var xx = GenerateRandomNumber2(); 
    $('#x').html(x); 
    $('#xx').html(xx); 
    $('#y').html(sum); 
}); 

JsFiddle:http://jsfiddle.net/vL77hjp0/

はしかし、私がなぜ「!==」私はそれをするつもり何の反対をやっている把握することはできません0に等しい値を返すしているようです。どんな助けでも大歓迎です。

+9

コードをお読みください。あなたは、合計がゼロでない限り、新しい乱数を選択すると言っています。つまり、sum *がゼロの場合にのみループを停止します。 – hobbs

+0

私は今理解しています。私はそのようなことを意味する間に解釈していた。すなわち、「合計が0でないような新しい数を見つける」。 –

答えて

0

whileループは、値が0ではない値の検索を続けようとしています。あなたは0に合計しない値を取得すると、続行します。

0

Random2は、値を持つように設定していないため、ゼロから始まります。
次に、ゼロでないかどうかを確認します。それはゼロなので、何も起こりません。 次に、まだゼロのRandom2を返します。

0

乱数を最初に生成し、合計がゼロの場合はチェックする必要があるため、「while」を「do while」に変更する必要があります。したがって、私は条件も変えました。

do { 
    random2 = Math.floor(Math.random() * (max2 - min2)) + min2; 
} while ((random2 + x) === 0) 
+0

ありがとう!これは機能します...なぜ私はちょうどそれが動作するのか混乱しています。素人の言い方をすれば、私はこれを(この乱数と前の数の合計が0になるような)do {{乱数を見つける}}という意味に解釈しています。しかし実際には、乱数と前の数の同じものが0に等しくない間に乱数を見つけています。 "==="ではなく "!=="で動作するようです。それはなぜですか?ありがとう! –

+0

心配しないでください - 私はそれを得ると思います。 「ランダム+ xが0に等しい限り、新しい番号を探し続ける」と言っています。 –

関連する問題