为什么(1<;NaN)在JavaScript中为false?

为什么(1<;NaN)在JavaScript中为false?,javascript,Javascript,为什么(1

为什么
(1
返回
false
,而不是
未定义的
(在JavaScript中)

在“11.8.5抽象关系比较算法”中指出,如果其中一个值为NaN(在我看来,TopPrimitive和ToNumber之后不应影响NaN),则结果为
未定义

在FF和Chrome中,我得到:

console.log(1 < NaN);
// false
console.log(1

为什么会这样?

因为在问题中引用规范的
+1.:-)您肯定应该研究Javascript的false/NaN/0/undefined/“”/null问题。这是一种极不一致的语言,也是这种语言最严重的缺陷之一。@SF:如果它真的很严格,人们会抱怨它。:-)规则并不是那么糟糕,事实上,这个特定的示例与false/NaN/0/undefined/“”/null无关。更重要的是,规范中的这一部分说明了关系是如何工作的,但是您必须查看其他地方,以了解在引用的部分中完成了工作后,实际的操作员所做的事情就更多了。