isNaN()和Number.NaN()
都是判断一个值是不是NaN。
isNaN()会尝试执行Number()将值转成数值,然后对转换后的结果是否是NaN进行判断。
isNaN(true) // false 因为Number(true)值为1,而1不是NaN, 所以返回false
isNaN(undefined); // true 因为Number(undefined)值为NaN, 所以返回true
isNaN({}); // true 因为Number({})值为NaN, 所以返回true
isNaN('abc'); // true 因为Number(abc)值为NaN, 所以返回true
isNaN(''); // false 因为Number('')值为0, 所以返回false
Number.isNaN()会先判断参数是不是number类型,如果不是,直接返回false,如果是,再判断是不是NaN。
// 基本使用
Number.isNaN(NaN) // true
Number.isNaN(1) // false
// 特殊情况
Number.isNaN(true) // false 因为true不是Number类型
Number.isNaN(undefined) // false 因为undefined不是Number类型
Number.isNaN({}) // false 因为{}不是Number类型
Number.isNaN("abc") // false 因为"abc"不是Number类型
Number.isNaN("") // false 因为""不是Number类型
总结: Number.isNaN用来判断某个值是否是NaN更像是我们理想型用法,不会产生一些比较怪异的行为,使我们的代码更加的严谨,防止出现bug, 所以在写代码的时候更推荐使用Number.isNaN这个方法来确定一个值是否是NaN。

浙公网安备 33010602011771号