📜  NaN - Javascript (1)

📅  最后修改于: 2023-12-03 15:33:05.357000             🧑  作者: Mango

NaN - JavaScript

NaN 是一个特殊的 JavaScript 值,表示不是数字(Not-a-Number)。当执行数学运算失败或者结果未定义时,会返回 NaN 值。

如何获取 NaN?

可以将字符串转换为数字,将非数字值转换为数字时会得到 NaN 值。

let num = parseInt("hello");
console.log(num); // NaN
如何判断一个值是否为 NaN?

NaN 和任何值都不相等,包括它本身。因此我们可以通过与自身的比较来确认一个值是否是 NaN

console.log(NaN === NaN); // false
console.log(isNaN(NaN)); // true

但需要注意的是,isNaN 会尝试将传入的值转换为数字,因此可能会返回意料之外的结果。例如,传入一个空字符串,isNaN 会尝试将其转换为 0

console.log(isNaN("")); // false
console.log(isNaN("hello")); // true

如果我们需要严格地判断一个值是否为 NaN,可以使用 Number.isNaN

console.log(Number.isNaN(NaN)); // true
console.log(Number.isNaN("")); // false
console.log(Number.isNaN("hello")); // false
如何处理 NaN?

由于 NaN 和任何值都不相等,因此我们可以通过比较操作符(===!==)来判断一个值是否为 NaN。但需要注意的是,可能有一些其他的值也不与它们自身相等,例如 undefined。所以在比较值是否为 NaN 时,需要使用 Number.isNaN

我们可以在执行数学运算之前判断是否会返回 NaN,从而避免出现 NaN 值。例如,如果我们想计算一个数字的平方根,可以使用 Math.sqrt 方法。但是对于负数,这个方法会返回 NaN。我们可以先判断这个数字是否为负数,如果是的话,就不再执行计算。

function getSqrt(num) {
  if (num < 0) {
    return NaN;
  }
  return Math.sqrt(num);
}

console.log(getSqrt(4)); // 2
console.log(getSqrt(-4)); // NaN
总结
  • NaN 是一个特殊的 JavaScript 值,表示不是数字。
  • 可以将字符串转换为数字,将非数字值转换为数字时会得到 NaN 值。
  • NaN 和任何值都不相等,包括它本身。我们可以通过与自身的比较来确认一个值是否是 NaN
  • 如果需要严格地判断一个值是否为 NaN,可以使用 Number.isNaN
  • 在执行数学运算之前判断是否会返回 NaN,从而避免出现 NaN 值。