Number.isNaN()

Number.isNaN() 方法确定传递的值是否为 NaN,并且检查其类型是否为 Number。它是原来的全局 isNaN() 的更稳妥的版本。

语法

Number.isNaN(value)

参数

value
要检测是否为 NaN 的值。

返回值

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

描述

在 JavaScript 中,NaN 最特殊的地方就是,我们不能使用相等运算符(=====)来判断一个值是否是 NaN,因为 NaN == NaNNaN === NaN 都会返回 false。因此,必须要有一个判断值是否是 NaN 的方法。

和全局函数 isNaN() 相比,Number.isNaN() 不会自行将参数转换成数字,只有在参数是值为 NaN 的数字时,才会返回 true

示例

Number.isNaN(NaN);        // true
Number.isNaN(Number.NaN); // true
Number.isNaN(0 / 0)       // true

// 下面这几个如果使用全局的 isNaN() 时,会返回 true。
Number.isNaN("NaN");      // false,字符串 "NaN" 不会被隐式转换成数字 NaN。
Number.isNaN(undefined);  // false
Number.isNaN({});         // false
Number.isNaN("blabla");   // false

// 下面的都返回 false
Number.isNaN(true);
Number.isNaN(null);
Number.isNaN(37);
Number.isNaN("37");
Number.isNaN("37.37");
Number.isNaN("");
Number.isNaN(" ");

Polyfill

Number.isNaN = Number.isNaN || function(value) {
    return typeof value === "number" && isNaN(value);
}

规范

Specification Status Comment
ECMAScript 2015 (6th Edition, ECMA-262)
Number.isnan
Standard Initial definition.
ECMAScript (ECMA-262)
Number.isnan
Living Standard

浏览器兼容性

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
isNaNChrome Full support 25Edge Full support 12Firefox Full support 15IE No support NoOpera Full support 15Safari Full support 9WebView Android Full support ≤37Chrome Android Full support 25Firefox Android Full support 15Opera Android Full support 14Safari iOS Full support 9Samsung Internet Android Full support 1.5nodejs Full support 0.10

Legend

Full support  
Full support
No support  
No support

相关链接