javascript等式返回false

时间:2013-01-04 20:22:52

标签: javascript equality

  

可能重复:
  Why `null >= 0 && null <= 0` but not `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) )

所有人都认为是假的:

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)为假

我使用最后一个铬来测试它。

1 个答案:

答案 0 :(得分:3)

null类型与number类型无法真正比​​较,因此comparison algorithm会返回false。从规范(省略关联案例):

  1. 如果类型相同,请使用特定类型的比较。
  2. null == undefinedtrue
  3. 将数字和字符串作为数字进行比较,将字符串转换为
  4. 如果比较布尔值,则将其转换为数字并再次进行比较
  5. 如果将数字或字符串与对象进行比较,则会将对象转换为基元并再次进行比较 - 不,Type(null)Null,而不是对象(如typeof operator中所示) )。
  6. 其他一切, return false