基本描述

语法

Number.isNaN(value)

参数

  • value 要被检测是否为NaN的值

返回值

布尔值,表示给定的值是否为NaN

polyfill

看到这个静态方法我们可以很轻松想起全局方法isNaN,但是isNaN有个问题,它会先把参数强转成为数值类型,然后才判断是否为NaN,因而会造成误判。所以以往要检验是否为NaN,需要先判断数值类型,然后再调用全局函数isNaNNumber.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;
    }
}

results matching ""

    No results matching ""