isNaN()和Number.isNaN()
在 JavaScript 中,NaN == NaN 和 NaN === NaN 都会返回 false。
所以,需要用其他方法判断值是否是 NaN。
方法一
isNaN(value)
参数 检测对象
返回值 布尔值
如果isNaN函数的参数不是Number类型, isNaN函数会先将这个参数转换为数值,然后对转换后的结果进行判断。
isNaN(NaN); // true
isNaN(undefined); // true
isNaN({}); // true
isNaN("NaN"); // true
isNaN(Number.NaN); // true
isNaN(0 / 0) // true
isNaN(true); // false
isNaN(null); // false
isNaN(10); // false
isNaN("10"); // false
方法二
Number.isNaN(value)
参数 检测对象
返回值 布尔值
Number.isNaN() 不会自行将参数转换成数字,只有在参数是值为 NaN 时,才会返回 true。
Number.isNaN(NaN); // true
Number.isNaN(undefined); // false
Number.isNaN({}); // false
Number.isNaN("NaN"); // false
Number.isNaN(Number.NaN); // true
Number.isNaN(0 / 0) // true
Number.isNaN(true); // false
Number.isNaN(null); // false
Number.isNaN(10); // false
Number.isNaN("10"); // false