在 JavaScript 中,NaN 是一种特殊的 Number 类型,代表 “Not a Number”(不是一个数字)。当我们试图进行某些数学计算但结果并非数值时,JavaScript 就会返回 NaN。以下是一些返回 NaN 的例子:
console.log(Math.sqrt(-1)); // 输出: NaN,因为负数的平方根在实数范围内不存在
console.log(0 / 0); // 输出: NaN,因为0除以0在数学中是未定义的
console.log('hello' - 1); // 输出: NaN,因为字符串无法转换为数字进行减法运算
NaN 有一些独特的属性。首先,它是唯一一个不等于自身的值
console.log(NaN == NaN); // 输出: false
console.log(NaN === NaN); // 输出: false
因此,你不能使用等号(= = 或 = = =)来检查一个值是否是 NaN。你应该使用 JavaScript 的全局函数 isNaN() 来检查:
console.log(isNaN(NaN)); // 输出: true
另外,虽然 NaN 代表 “Not a Number”,但它的类型实际上是 Number:
console.log(typeof NaN); // 输出: "number"
这可能会让人觉得有些混淆,但这是因为在 JavaScript 中,Number 类型不仅代表数字,还代表了一些特殊值,比如 NaN、Infinity(无穷大)和 -Infinity(负无穷大)。