'v!== v'表达式检查是什么?
答
它检查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
答
它测试“不是一个数字”:NaN !== NaN
等于true
从MDN:
楠初始值不是一个数 - 一样的 数的值。 NaN的。在现代浏览器中,NaN是不可配置的, 不可写属性。即使情况并非如此,请避免 覆盖它。
在程序中使用NaN相当罕见。当数学函数失败
(Math.sqrt(-1))
或尝试对 解析数字的函数失败时,返回值为(parseInt("blabla"))
。
显然,这样做在ES6方式是'Object.is(OBJ,NAN)':http://wiki.ecmascript.org/doku.php ?id = harmony:egal – 2012-07-11 10:25:51
@OttoAllmendinger相当有趣。感谢您的信息。 – Engineer 2012-07-11 15:27:20