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

use*_*437 5 javascript

我在一个lib的源代码中看到了这个,并且很困惑.我认为,它总是评估为' false'.使用它的意义是什么?

Eng*_*eer 6

它检查是否vNaN:

if( v !== v ){
    //'v' is NaN   here
}
Run Code Online (Sandbox Code Playgroud)

标准:

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

为什么不使用内置isNaN()

答案很简单:" isNaN()不够可靠. " 以下是isNaN()将失败的情况:

isNaN("NaN")         //true
isNaN(undefined)     //true
Run Code Online (Sandbox Code Playgroud)