3

重複の可能性:
なぜ「null >= 0 && null <= 0」であるのに「null == 0」ではないのですか?

すべてが真であると仮定します:

alert( "null==undefined:  " + (null == undefined) )
alert( "null==0:          " + (null == 0) )       // why false??
alert( "false=='':        " + (false == '') )
alert( "true==1:          " + (true == 1) )
alert( "true=='1':        " + (true == '1') )
alert( "'1'==1:           " + ('1' == 1) )

すべてが false であると仮定します。

alert( "null===undefined:  " + (null === undefined) )
alert( "null===0:          " + (null === 0) )  
alert( "false==='':        " + (false === '') )
alert( "true===1:          " + (true === 1) )
alert( "true==='1':        " + (true === '1') )
alert( "'1'===1:           " + ('1' === 1) )

(null == 0) が偽である理由

最後のクロムを使用してテストします。

4

1 に答える 1

3

nullタイプは実際にはタイプnumberと比較できないため、比較アルゴリズムはを返しますfalse。仕様から(関連するケースは省略):

  1. タイプが等しい場合は、タイプ固有の比較を使用します。
  2. null == undefinedtrue
  3. 数字と文字列は数字として比較され、文字列は変換されます
  4. ブール値を比較すると、数値に変換されて再度比較されます
  5. 数値または文字列がオブジェクトと比較される場合、オブジェクトはプリミティブに変換されて再度比較されます-そして、いいえ、Type(null)Nullオブジェクトではなく、(typeof演算子のように)です。
  6. 他のすべてについては、return false
于 2013-01-04T20:27:58.037 に答える