需要强调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