基本描述
语法
Number.isNaN(value)
参数
- value 要被检测是否为NaN的值
返回值
布尔值,表示给定的值是否为NaN
polyfill
看到这个静态方法我们可以很轻松想起全局方法isNaN
,但是isNaN
有个问题,它会先把参数强转成为数值类型,然后才判断是否为NaN,因而会造成误判。所以以往要检验是否为NaN,需要先判断数值类型,然后再调用全局函数isNaN
。Number.isNaN
相当于是把我们的这种判断方式进行了标准化。
Number.isNaN = Number.isNaN || function(value) {
return typeof value === "number" && isNaN(value);
}
上面的代码是MDN提供的一个polyfill。有了上面的描述这段polyfill不难理解了吧。
但是我并不是很认同这段polyfill。因为判断NaN还有一个方法,这个方法利用了NaN不等于NaN,即一个值如果不等于它本身,那么一定是NaN。
if(!Number.isNaN){
Number.isNaN = function(value){
return value !== value;
}
}