定义
NaN是一个特殊的数字值(
typeof NaN的结果为number),是not a number的缩写,表示不是一个合法的数字。
注意点
NaN最大的怪癖是唯一一个和自身不相等的值
NaN === NaN // false
如何辨别NaN
isNaN() 是一个全局方法,它的作用是检查一个值是否能被 Number() 成功转换 。 如果能转换成功,就返回 false,否则返回 true 。
另外,ES6 在 Number 对象上也提供了 isNaN() 方法,和全局方法 isNaN() 不同的是,它用于判断某个值本身是否为 NaN,而不需要进行类型转换。
/*isNaN()方法*/
isNaN(NaN)    // true 不能转换
isNaN(true)   // false 能转换
isNaN(123)   // false 能转换
isNaN('123')   // false 能转换
isNaN('abc')    // true 不能转换
isNaN('123ab')   // true 不能转换
isNaN('123.45abc') // true 不能转换/*Number.isNaN()方法*/
Number.isNaN(false)    // false 本身不是NaN
Number.isNaN(123)     // false 本身不是NaN
Number.isNaN('123')  // false 本身不是NaN
Number.isNaN('abc') // false 本身不是NaN
Number.isNaN(NaN) // true 本身是NaN 
扩展
当然想确定一个值是否为
NaN,可以使用以下两种方法:
- 方法一:将
isNaN()和typeof结合来判断 
function isValueNaN(value) {return typeof value === 'number' && isNaN(value)
} 
- 方法二:值是否与本身不相等(
NaN是唯一有这样特征的值) 
function isValueNaN(value) {return value !== value
} 
注:本人前端小白 ,如有不对的地方还请多多指教