Number.isNaN()

基线 广泛可用

此功能已经成熟,可以在许多设备和浏览器版本中使用。它从以下时间开始在所有浏览器中可用: 2015 年 7 月.

Number.isNaN() 静态方法用于确定传递的值是否为数字值 NaN,如果输入不是 Number 类型则返回 false。它是原始全局 isNaN() 函数的更强大版本。

试一试

语法

js
Number.isNaN(value)

参数

要测试是否为 NaN 的值。

返回值

如果给定值为具有值 NaN 的数字,则为布尔值 true。否则为 false

描述

函数 Number.isNaN() 提供了一种方便的方法来检查与 NaN 的相等性。请注意,您不能使用 ===== 运算符来测试与 NaN 的相等性,因为与 JavaScript 中所有其他值比较不同,这些运算符在任何一个操作数为 NaN 时都将评估为 false,即使另一个操作数也是 NaN

由于 x !== x 仅在所有可能的 JavaScript 值中对于 NaN 为真,因此 Number.isNaN(x) 也可以替换为对 x !== x 的测试,尽管后者可读性较差。

与全局 isNaN() 函数相反,Number.isNaN() 方法不会强制将参数转换为数字。这使得它可以安全地传递通常会转换为 NaN 但实际上与 NaN 不相同的。这也意味着只有 Number 类型的值也是 NaN 时才会返回 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, this is coerced to 1
isNaN(null); // false, this is coerced to 0
isNaN("37"); // false, this is coerced to 37
isNaN("37.37"); // false, this is coerced to 37.37
isNaN(""); // false, this is coerced to 0
isNaN(" "); // false, this is coerced to 0

规范

规范
ECMAScript 语言规范
# sec-number.isnan

浏览器兼容性

BCD 表仅在浏览器中加载

另请参阅