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() 的怪异行为。
