什么'v!== v'表达式检查?

时间:2012-07-11 10:15:52

标签: javascript

我在一个lib的来源中看到过这个,并且很困惑。我认为,它总是评估为“false”。使用它的意义是什么?

2 个答案:

答案 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"))