在 JavaScript 中检查一个数字是否为 NaN

在 JavaScript 中检查一个数字是否为 NaN

Check if a Number is NaN in JavaScript

使用该Number.isNaN()方法检查数字是否为 NaN,例如
if (Number.isNaN(num)) {}. 如果提供的值是且类型为 ,则Number.isNaN()方法将返回trueNaNnumber

索引.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 numbernumber 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方法只会返回truefor Number.isNaN(0 / 0)所有其他示例将返回false

isNaN方法有点不直观,Number.isNaN因为它会在检查值是否为 之前尝试将非数字强制转换为数字
NaN

发表评论