📜  isNaN javascript (1)

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

JavaScript中的isNaN函数

在JavaScript中,isNaN函数可以用来判断一个值是否是NaN(Not a Number)。如果是,返回true,否则返回false

使用示例:

isNaN(123); // false
isNaN('123'); // false
isNaN('hello'); // true
isNaN(true); // false
isNaN(undefined); // true
isNaN(null); // false
isNaN({}); // true

注意:isNaN函数会先尝试将参数转换为数字,如果不能转换,才会返回true

下面是一些需要注意的点:

特殊值
  • NaN不等于任何值(包括它自身):
NaN === NaN; // false
  • isNaN函数对于字符串、布尔值、null、空字符串和空数组等值都会返回false
isNaN(''); // false
isNaN(false); // false
isNaN(null); // false
isNaN([]); // false
转换规则
  • 如果参数是对象,则会先调用该对象的valueOf方法,再尝试将返回值转换为数字。
const obj = {
  valueOf: function () {
    return 42;
  }
};

isNaN(obj); // false
  • 如果valueOf方法的返回值不能被转换为数字,则会尝试调用该对象的toString方法,再将返回值转换为数字。
const obj = {
  valueOf: function () {
    return {};
  },

  toString: function () {
    return '42';
  }
};

isNaN(obj); // false
  • 如果对象既没有valueOf方法,也没有toString方法,则会返回true
const obj = {};

isNaN(obj); // true
总结
  • isNaN函数用于判断一个值是否为NaN。
  • 特殊值、字符串、布尔值、null、空字符串和空数组等都会被转换为数字然后返回false
  • 对象会先调用valueOf方法,再尝试转换为数字;如果没有valueOf方法,才会尝试调用toString方法;如果两个方法都没有,则会返回true