javascript相等返回false
可能重复:javascript相等返回false,javascript,equality,Javascript,Equality,可能重复: 为什么`null>=0&&null类型null与number类型不可比较,因此返回false。根据规范(省略了关联案例): 如果类型相等,请使用特定于类型的比较 null==undefined为true 将数字和字符串作为数字进行比较,然后转换字符串 如果比较布尔值,则将其转换为数字并再次比较 如果将数字或字符串与对象进行比较,则该对象将转换为原语并再次进行比较-否,为Null,而不是对象(如中所示) 对于其他所有内容,返回false 为什么您希望它是true?因为null和0不相等
为什么`null>=0&&null类型
null
与number
类型不可比较,因此返回false
。根据规范(省略了关联案例):
null==undefined
为true
Null
,而不是对象(如中所示)返回false
为什么您希望它是
true
?因为null
和0
不相等。0是数字。空就是空。在这本书的第9页,作者认为这假设是真的。确切地说,它是。似乎null
只能与自身进行比较,而且undefined
@bfavaretonull
是一个对象,因此它应该是步骤8或9,而不是10。但是null属于object类型。这不清楚。是的,它不清楚,因为ToPrimitive(null)
显然产生null
@kojiro,bfavaretto:类型(null)
不是对象
,而是null
。
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) )