为什么NaN大于JavaScript中的任何数字?

时间:2014-11-17 22:06:34

标签: javascript

以下是一个例子:

parseInt(50) > parseInt('a');

在控制台上执行此操作时,它将返回false。我的原始代码看起来有点像这样:

variableB = parseInt(jQuery('some-element').html());
if(parseInt(variableA) > variableB)
     // do something
else
     // do something else

有时some-element不会被填充,因此返回NaN。发生这种情况时,我确实希望执行else块。我实际上得到了我的期望,但我只是想确保它确实打算以这种方式工作。

2 个答案:

答案 0 :(得分:7)

在IEEE 754算术中,the floating-point model used by JavaScriptNaN(或非数字),根据定义,不小于,等于或大于任何其他数字。

请注意,这甚至适用于两个NaN:如果x = NaNy = NaN,则比较x === y将返回false。

下面我引用IEEE 754 Standard(第5.11节)指定此行为的部分:

  

四种相互排斥的关系是可能的:小于,平等,   大于,无序。最后一种情况出现在至少一种情况下   操作数是NaN。每个NaN都应该比较无序   一切,包括它自己。

答案 1 :(得分:5)

涉及NaN的所有比较将始终返回false NaN既不小于也不大于任何数字。