在前端开发中,NaN
代表 Not a Number,即“非数字”。它是一个特殊的数值,用于表示无效的或未定义的数学运算结果。
尽管NaN
表示“非数字”,但令人困惑的是,typeof NaN
的结果却是 "number"
。 这是 JavaScript 的一个历史遗留问题,虽然看起来不符合逻辑,但已经成为标准的一部分。
出现 NaN
的常见情况包括:
- 涉及到非数字值的数学运算: 例如,
parseInt("hello")
、Math.sqrt(-1)
(在实数范围内)、1/"a"
、0/0
等等。 - 不确定形式的运算: 例如
Infinity - Infinity
、Infinity * 0
、Infinity / Infinity
等。 - 将非数字字符串转换为数字: 例如
Number("abc")
。
需要注意的是,NaN
具有以下特殊性质:
- 任何涉及
NaN
的运算结果都仍然是NaN
: 例如,NaN + 5
的结果仍然是NaN
。 NaN
不等于任何值,包括它自身:NaN === NaN
的结果是false
。 因此,要判断一个值是否为NaN
,需要使用isNaN()
函数。
所以在 JavaScript 中,要检查一个值是否为 NaN
,应该使用 isNaN()
函数,而不是使用相等运算符(==
或 ===
)。 例如:
const value = parseInt("hello");if (isNaN(value)) {console.log("value is NaN");
} else {console.log("value is a number");
}
总而言之,NaN
表示一个无效的数字结果,尽管它的类型是 "number",但它不等于任何值,包括它自身。 使用 isNaN()
函数来判断一个值是否为 NaN
。