我应该如何理解这些?
null>0
> false
null==0
> false
null>=0
> true
答案 0 :(得分:20)
关系运算符(>=
和<=
)执行类型强制(ToPrimitive
),提示类型为Number
,所有存在的关系运算符都有此行为
您可以在The Abstract Relational Comparison Algorithm。
中查看此流程的内部详细信息另一方面,Equals operator(==
),如果操作数为null
,则只有true
,如果另一个是null
或undefined
,没有数字类型强制。
null == undefined; // true
null == null; // true
在The Abstract Relational Comparison Algorithm。
中查看此流程的内部详细信息推荐文章:
答案 1 :(得分:4)
相对比较运算符意味着数字上下文,因此在这些情况下(>
,>=
),null
将转换为数字(零)。
然而,在==
的情况下,两个值都被视为布尔值,而Javascript不认为null
应该等于任何其他“虚假”值。这有点奇怪。 ==
的相等算法有一堆特殊情况,null
就是其中之一。它本身只有==
和undefined
。
答案 2 :(得分:2)
当在数字刻度中使用null时,它会评估为0,这解释了你的&gt;和&gt; =案例。
==更微妙。非正式地,null与零不同,所以它有意义。
答案 3 :(得分:0)
有趣!似乎Javascript需要一些新的身份运营商,如>==
和<==
。鉴于>
和<
的数字含义,我不确定这会有多大意义。
这给出了预期的结果......
(null > 0 || null === 0);