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

posted @ 2024-02-22 16:09  想要魔法棒  阅读(69)  评论(0编辑  收藏  举报