javascript null零比较差异背后的原因是什么?

时间:2014-06-11 20:54:22

标签: javascript

我在杰夫阿特伍德tweet的背后问这个问题,它显示了以下javascript中零/零比较的结果:

null zero comparison in javascript

我之前已经看过这个,虽然很有趣,但我想知道这种行为背后是否存在逻辑或推理?

1 个答案:

答案 0 :(得分:7)

0 == null永远不会true。 “松散比较”null仅等于自身或undefined

然而,关系运算符首先将其操作数转换为数字,如果其中任何一个是数字。因此,由于0是一个数字,null会转换为数字。 null的数学值为0。所以你最终比较

0 > 0     // nope
0 >= 0    // yes
0 == null // nope, null is only equal to null and undefined
0 <= 0    // yes
0 < 0     // nope

这些规则都在ECMAScript specification中定义(无论它们是否有意义都是一个不同的问题)。