在 JavaScript 中检查一个数字是否为 NaN
Check if a Number is NaN in JavaScript
使用该Number.isNaN()
方法检查数字是否为 NaN,例如
if (Number.isNaN(num)) {}
. 如果提供的值是且类型为 ,则该Number.isNaN()
方法将返回。true
NaN
number
索引.js
const num = 0 / 'test'; console.log(num); // 👉️ NaN if (Number.isNaN(num)) { // 👉️ this runs only if NaN and type of number console.log('Number is NaN'); }
我们使用
Number.isNaN
方法来检查一个值的类型是否为number
和 is NaN
。
在检查 , 时不应使用相等运算符NaN
,因为在 JavascriptNaN
中不等于。NaN
索引.js
// ❌ don't do this console.log(Number.NaN === Number.NaN); // 👉️ false
NaN
是 JavaScript 中唯一不等于自身的值。该Number.isNaN()
方法仅true
在满足以下条件时返回:
- 该值是类型
number
- 价值是
NaN
以下所有示例都返回false
.
索引.js
console.log(Number.isNaN('string')); // 👉️ false console.log(Number.isNaN(undefined)); // 👉️ false console.log(Number.isNaN(null)); // 👉️ false console.log(Number.isNaN([])); // 👉️ false console.log(Number.isNaN({})); // 👉️ false
这是一个 polyfill,演示了该Number.isNaN
方法是如何实现的。
索引.js
Number.isNaN = Number.isNaN || function isNaN(input) { return typeof input === 'number' && input !== input; }
我们首先检查Number.isNaN
浏览器是否支持该方法。
如果不支持,我们通过将函数附加到对象的isNaN
属性来实现它Number
。
该函数检查提供的值的类型是否为类型number
且不等于自身。
NaN
是 JavaScript 中唯一不等于自身的值,因此这足以确定该值是否为NaN
.另一种方法是使用旧的
isNaN
方法。
如果提供给该
isNaN
方法的参数不是类型,则该方法在检查它是否为 之前将值强制为 a 。 number
number
NaN
这与Number.isNaN
不强制传入值的方法不同。
以下是使用该isNaN
方法的一些示例:
索引.js
console.log(isNaN(0 / 0)); // 👉️ true console.log(isNaN('string')); // 👉️ true console.log(isNaN(undefined)); // 👉️ true console.log(isNaN({})); // 👉️ true console.log(isNaN(null)); // 👉️ false console.log(isNaN([])); // 👉️ false
该Number.isNaN
方法只会返回true
for Number.isNaN(0 / 0)
。所有其他示例将返回false
。
旧isNaN
方法有点不直观,Number.isNaN
因为它会在检查值是否为 之前尝试将非数字强制转换为数字
NaN
。