Number.isNaN()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
尝试一下
语法
js
Number.isNaN(value)
参数
返回值
如果给定值是一个值为 NaN
的数字,则返回布尔值 true
,否则返回 false
。
描述
函数 Number.isNaN()
提供了一种方便的方法来检查值是否与 NaN
相等。请注意,你不能使用 ==
或 ===
运算符来测试值与 NaN
的相等性,因为与 JavaScript 中的其他值的比较不同,这些运算符在一个操作数为 NaN
时始终返回 false
,即使另一个操作数也是 NaN
。
由于在所有可能的 JavaScript 值中,x !== x
只有对于 NaN
才为真,因此 Number.isNaN(x)
也可以替换为 x !== x
,尽管后者可读性较差。
与全局的 isNaN()
函数相反,Number.isNaN()
方法不会将参数强制转换为数字。这样可以安全地传入通常会转换为 NaN
但实际上与 NaN
不同的值。这也意味着只有等于 NaN
的 Number 类型的值才会返回 true
。
示例
使用 isNaN()
js
Number.isNaN(NaN); // true
Number.isNaN(Number.NaN); // true
Number.isNaN(0 / 0); // true
Number.isNaN(37); // false
Number.isNaN() 和全局 isNaN() 之间的区别
Number.isNaN()
不会尝试将参数转换为数字,因此非数字总是返回 false
。以下都返回 false
:
js
Number.isNaN("NaN");
Number.isNaN(undefined);
Number.isNaN({});
Number.isNaN("blabla");
Number.isNaN(true);
Number.isNaN(null);
Number.isNaN("37");
Number.isNaN("37.37");
Number.isNaN("");
Number.isNaN(" ");
全局 isNaN()
函数会将参数强制转换为数字:
js
isNaN("NaN"); // true
isNaN(undefined); // true
isNaN({}); // true
isNaN("blabla"); // true
isNaN(true); // false,强制转换为 1
isNaN(null); // false,强制转换为 0
isNaN("37"); // false,强制转换为 37
isNaN("37.37"); // false,强制转换为 37.37
isNaN(""); // false,强制转换为 0
isNaN(" "); // false,强制转换为 0
规范
Specification |
---|
ECMAScript Language Specification # sec-number.isnan |
浏览器兼容性
BCD tables only load in the browser