Javascript比较问题(null> = 0)

时间:2010-07-30 14:19:43

标签: javascript comparison

我应该如何理解这些?

null>0
> false

null==0
> false

null>=0
> true

4 个答案:

答案 0 :(得分:20)

关系运算符(>=<=)执行类型强制(ToPrimitive),提示类型为Number,所有存在的关系运算符都有此行为

您可以在The Abstract Relational Comparison Algorithm

中查看此流程的内部详细信息

另一方面,Equals operator==),如果操作数为null,则只有true,如果另一个是nullundefined,没有数字类型强制。

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);