JavaScript Number.isNaN() 方法

JavaScript Number.isNaN() 语法

Number.isNaN() 是 JavaScript Number 对象的一个静态方法,它可以用于判断某个值是否为 NaN 值。

NaN,其实是 “Not a Number(非数值)” 的缩写。在 JavaScript 中,typeof NaN 的结果是 "number"。它是一个 “数值类型” 中的特殊值,表示 “无法表示的数值”,而不是 “非数字类型”。

与 Number.isNaN() 相似的还有一个全局函数:isNaN()。不过 isNaN() 函数有些行为可能比较怪异,在实际开发中并不推荐使用。

语法:

Number.isNaN(value)

说明:

Number.isNaN() 方法接收单个参数。

  • value(必选):表示要判断的值。

NaN 是 JavaScript 中唯一一个不等于自身的值(即 NaN === NaN 为 false)。因此在实际开发中,我们不能使用相等运算符来判断一个值是否为 NaN,而是应该使用 Number.isNaN() 来判断。

提示:

  • isNaN() 是一个静态方法,它只能被类名(即 Number)调用,而无法被实例调用。
  • Number.isNaN() 是 ES6 推出的,它是全局函数 isNaN() 的更健壮版本。

JavaScript Number.isNaN() 摘要

属于 JavaScript Number 对象
使用频率
官方文档 查看
MDN 查看

JavaScript Number.isNaN() 示例

接下来,我们通过一个简单的例子来讲解 JavaScript Number.isNaN() 是如何使用的。

示例 1:Number.isNaN() 基本用法

console.log(Number.isNaN(NaN));
console.log(Number.isNaN(666));
console.log(Number.isNaN("绿叶网"));
console.log(Number.isNaN([1, 2, 3]));
console.log(Number.isNaN({name: "Jack"}));

运行结果如下。

true
false
false
false
false

分析:

简单来说,只有当值为 NaN 时,Number.isNaN() 才会返回 true。而对于其他值(包括数字、字符串、数组、对象等),Number.isNaN() 都是返回 false。

Number.isNaN() 与 isNaN() 的区别

Number.isNaN() 是一个静态方法,而 isNaN() 是一个全局函数。它们的功能是一样的,都是用于判断一个值是否为 NaN。

但在实际开发中,我们更推荐使用 Number.isNaN(),而不是 isNaN() 函数。这是因为 isNaN() 函数会将某些值自动转换为数字,然后再进行判断,这种怪异行为可能会导致结果并不符合预期。

示例 2:isNaN() 会导致怪异行为

console.log(isNaN(NaN));           // true
console.log(isNaN(undefined));     // true
console.log(isNaN({}));            // true

console.log(isNaN([]));            // false
console.log(isNaN(""));            // false
console.log(isNaN(true));          // false
console.log(isNaN(false));         // false
console.log(isNaN(null));          // false

运行结果如下。

true
true
true
false
false
false
false
false

分析:

对于 undefined 和 {} 来说,isNaN() 函数会将其转化为 NaN,然后再进行判断,因此返回的是 true。而对于 []、""、true、false、null 等,isNaN() 函数会将其转化为对应的数字,然后再进行判断,因此返回的是 false。

示例 3:Number.isNaN() 不会导致怪异行为

console.log(Number.isNaN(NaN));           // true
console.log(Number.isNaN(undefined));     // false
console.log(Number.isNaN({}));            // false

console.log(Number.isNaN([]));            // false
console.log(Number.isNaN(""));            // false
console.log(Number.isNaN(true));          // false
console.log(Number.isNaN(false));         // false
console.log(Number.isNaN(null));          // false

运行结果如下。

true
false
false
false
false
false
false
false

分析:

使用 Number.isNaN() 来判断某个值是否为 NaN,则不会存在 isNaN() 的怪异行为。

上一篇: Number.isSafeInteger()

下一篇: Number.isFinite()

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号