JavaScript NaN

摘要: 本教程将介绍 JavaScript 的 NaN,如何检查一个值是否为 NaN,以及如何有效地处理 NaN

JavaScript NaN 简介

JavaScript 拥有 数字 类型,它允许你表示数字,包括整数和浮点数。JavaScript 数字有一个特殊的值叫做 NaN,它代表数字。

NaN全局对象 的属性。全局对象在 Web 浏览器中是 window 对象

window.NaNCode language: JavaScript (javascript)

在 Node.js 中是全局对象。

global.NaNCode language: CSS (css)

NaN 的类型为 number,如以下代码所示

console.log(typeof NaN); // numberCode language: JavaScript (javascript)

检查一个值是否为 NaN

JavaScript 提供了全局函数 isNaN(),如果其参数为 NaN,则返回 true

isNaN(valueToCheck)Code language: JavaScript (javascript)

例如

const result = 100 + 0 / 0;
console.log(isNaN(result)); // trueCode language: JavaScript (javascript)

为什么要使用 NaN

JavaScript 使用 NaN 作为对数字进行失败操作的结果,包括

  • 解析数字
  • 使用 undefined 作为操作数
  • 使用 NaN 作为操作数
  • 使用不确定的形式
  • 将无效参数传递给数学函数

操作返回 NaN

1) 解析数字

在 JavaScript 中,你可以将一个数字 字符串 转换为数字。例如

const input = '100';
const num = parseInt(input);

console.log(num); // 100Code language: JavaScript (javascript)

如果 JavaScript 无法将字符串转换为数字,它将返回 NaN。在这种情况下,NaN 表示解析失败。例如

const input = 'X100';
const num = parseInt(input);

console.log(num); // NaNCode language: JavaScript (javascript)

使用 isNaN 函数验证解析结果是一个良好的做法

const input = 'X100';
const num = parseInt(input);

// set num to 0 if parsing failed
if (isNaN(num)) {
    num = 0;
}

console.log(num); // 0Code language: JavaScript (javascript)

在这个例子中,解析失败,因此它返回了 NaN。条件 isNaN(num) 为真,因此数字被赋值为 0

2) 使用 undefined 作为操作数

使用 undefined 作为操作数的表达式将返回 NaN。例如

console.log(undefined * 2); // NaNCode language: JavaScript (javascript)

在实践中,你将经常处理 undefined。例如,当你访问 HTML 元素的非存在属性并将其用于计算时。

避免在计算中使用 undefined 是一个良好的做法。

3) 使用 NaN 作为操作数

当表达式包含 NaN 时,它始终返回 NaN。例如

const result = 10 + 1 / NaN;

console.log(result); // NaNCode language: JavaScript (javascript)

4) 使用不确定的形式

当算术运算处于不确定的形式时,它将返回 NaN。例如

const result = 10 + 0 / 0;
console.log(result); // NaNCode language: JavaScript (javascript)

5) 使用数学函数的无效参数

当数学函数接收无效参数时,它将返回 NaN。例如

const result = Math.sqrt(-1);
console.log(result); // NaNCode language: JavaScript (javascript)

在这个例子中,Math.sqrt() 返回一个数字的平方根。由于它只接受非负数,因此传递 -1 将导致 NaN

总结

  • NaN 代表非数字。它是全局对象的 NaN 属性的特殊值。
  • NaN 表示对数字的失败操作。
  • 使用 isNaN() 函数检查一个值是否为 NaN

本教程对您有帮助吗?