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

为什么NaN大于JavaScript中的任何数字?,javascript,Javascript,以下是一个例子: parseInt(50) > parseInt('a'); 在控制台上执行此操作时,它将返回false。我的原始代码看起来有点像这样: variableB = parseInt(jQuery('some-element').html()); if(parseInt(variableA) > variableB) // do something else // do something else 有时some元素不会被填充,因此返回NaN。发生

以下是一个例子:

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

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

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

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

在IEEE 754算术规范中,
NaN
(或非数字)根据定义不小于、等于或大于任何其他数字

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

以下我引用了第5.11节中规定了该行为的部分:

四种相互排斥的关系是可能的:小于、等于、, 大于,且无序。最后一种情况是,至少有一个 操作数为
NaN
。每个
NaN
应与无序进行比较 一切,包括它自己


if(parseInt(variableA)>variableB&&!isNaN(variableB))
您没有测试反向,是吗?比较,无论是
。在继续之前,为什么不检查
variableB
,看看它是否是
NaN
?我没有测试反面的David,谢谢你指出了这一点。严格来说,这并不完全正确,不是吗;还是
==/
=不算作“比较”?(我可能有点迂腐,但我不知道你的声明中是否遗漏了一个技术细节。)