📜  js 中的 nan - Javascript (1)

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

JS中的NaN

在JavaScript中,NaN表示“不是数字”,即不是有效数字。它是一种特殊的值,定义为“不等于任何东西,包括自身”,可以用于表示错误结果或未定义结果的情况。本文将介绍NaN的用法,如何检测NaN以及如何避免NaN的出现。

创建NaN

可以通过将非数字值与数字相加或将数字除以零来创建NaN。

console.log("hello" / 3); // NaN
console.log(1 / 0); // Infinity
console.log(0 / 0); // NaN
检测NaN

虽然NaN是一种特殊的数值,但它仍然是一种数值类型,可以使用typeof运算符检测它。

console.log(typeof NaN); // "number"

在JavaScript中,使用isNaN()函数来检测一个值是否是NaN。但是,需要注意的是,该函数对于非数值类型的值也返回true,因此,在使用isNaN()时需要先将输入值转换为数值类型。

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

如果不需要将字符串等非数值类型的值转换为数值类型,则可以使用Number.isNaN()函数来检测一个值是否是NaN。

console.log(Number.isNaN(NaN)); // true
console.log(Number.isNaN("hello")); // false
console.log(Number.isNaN("123")); // false
console.log(Number.isNaN("")); // false
避免NaN

NaN可以在一些不符合数学规律的计算中产生,因此需要避免它的出现。以下是一些避免NaN的方法:

  1. 检查输入值是否为有效值

在进行数学计算之前,应先检查输入值是否为有效值,例如:

function divide(a, b) {
  if (typeof a !== "number" || typeof b !== "number" || b === 0) {
    return "invalid input";
  } else {
    return a / b;
  }
}
  1. 使用默认值

如果输入值不是有效值,则可以使用默认值避免NaN的出现,例如:

function multiply(a, b) {
  a = a || 0;
  b = b || 0;
  return a * b;
}
  1. 使用Number.isFinite()函数

使用Number.isFinite()函数可以检测一个值是否为有限数值。如果输入值不是有限数值,则可以使用默认值或给出错误提示,例如:

function add(a, b) {
  if (Number.isFinite(a) && Number.isFinite(b)) {
    return a + b;
  } else {
    return "invalid input";
  }
}
总结

NaN是一种特殊的数值,表示“不是数字”,可以用于表示错误结果或未定义结果的情况。需要注意的是,使用isNaN()函数时需要将非数值类型的值转换为数值类型。在进行数学计算时,应先检查输入值是否为有效值,避免NaN的出现。