我在一个库的来源中看到了这一点,并且感到困惑。我认为,它总是评估为' false
'。使用它有什么意义?
问问题
86 次
2 回答
6
它检查是否v
是NaN
:
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 回答