我在一个lib的来源中看到过这个,并且很困惑。我认为,它总是评估为“false
”。使用它的意义是什么?
答案 0 :(得分:6)
它会检查v
是否为NaN
:
if( v !== v ){
//'v' is NaN here
}
来自standard:
ECMAScript代码测试值X是否为NaN的可靠方法是X!== X形式的表达式。当且仅当X是NaN时,结果才为真。
为什么不使用内置的isNaN()
?
答案很简单:“ isNaN()
不够可靠。”。以下是isNaN()
失败时的情况:
isNaN("NaN") //true
isNaN(undefined) //true
答案 1 :(得分:1)
它测试“非数字”:NaN !== NaN
等于true
来自MDN:
NaN的初始值是Not-A-Number - 与值相同 Number.NaN。在现代浏览器中,NaN是不可配置的, 不可写财产。即使不是这种情况,也要避免 压倒它。
在程序中使用NaN是相当罕见的。它是返回的值 当数学函数失败
(Math.sqrt(-1))
或函数尝试失败时 解析数字失败(parseInt("blabla"))
。