当前位置: 代码迷 >> 综合 >> Number.isNaN 和isNaN有何区别?
  详细解决方案

Number.isNaN 和isNaN有何区别?

热度:91   发布时间:2023-11-18 04:35:04.0

需要强调NaN是一个Number类型的值(value)。表示这是一个特殊的数值。
当一个值被强行转成Number类型的值时,转换失败该值变成NaN

+'1'  //1   字符串'1' 可被转换成number类型的 1
+'a'  //NaN 字符串'a'转成number类型会变成NaN
+null  //0    null 可被转换成number类型的 0
+undefined  //NaN undefined转成number类型的值变成NaN

isNaN与Number.isNaN最大的区别在于isNaN函数会尝试把值转成number类型,Number.isNaN类型则不会进行类型转换,也就是Number.isNaN仅仅判断一个值是否为NaN。
使用isNaN判断一个值是否为NaN

+'a'  //NaN 字符串'a'转成number类型会变成NaN
isNaN('a')   //true  由于'a'转成number会变成NaN,故返回true
+null  //0    null 可被转换成number 0
isNaN(null)   //false  由于null可被转成0,所以null不是一个NaN,故返回false
+undefined  //NaN undefined转成number类型的值变成NaN
isNaN(undefined) //true undefined 转成number 变成NaN,所以返回true
isNaN(NaN)  //true 

使用Number.isNaN判断一个值是否为NaN

+'a'  //NaN 字符串'a'转成number类型会变成NaN
Number.isNaN('a')   //false  'a'不是NaN ,故返回false
+null  //0    null 可被转换成number 0
Number.isNaN(null)   //false null 不是NaN 故返回false
+undefined  //NaN undefined转成number类型的值变成NaN
Number.isNaN(undefined) //false undefined 不是NaN 故返回false
Number.isNaN(NaN)  //true 
  相关解决方案