5

我在一个库的来源中看到了这一点,并且感到困惑。我认为,它总是评估为' false'。使用它有什么意义?

4

2 回答 2

6

它检查是否vNaN

if( v !== v ){
    //'v' is NaN   here
}

标准

ECMAScript 代码测试值 X 是否为 NaN 的可靠方法是 X !== X 形式的表达式。当且仅当 X 为 NaN 时结果才为真。

为什么不直接使用内置isNaN()

答案很简单:“isNaN()不够可靠。 ”。以下是isNaN()失败的情况:

isNaN("NaN")         //true
isNaN(undefined)     //true
于 2012-07-11T10:16:59.840 回答
1

它测试“非数字”:NaN !== NaN等于true

来自MDN

NaN 的初始值为 Not-A-Number — 与 Number.NaN 的值相同。在现代浏览器中,NaN 是不可配置、不可写的属性。即使不是这种情况,也要避免覆盖它。

在程序中很少使用 NaN。它是数学函数失败(Math.sqrt(-1))或试图解析数字的函数失败时的返回值(parseInt("blabla"))

于 2012-07-11T10:16:54.497 回答