全局属性 NaN
的值表示不是一个数字(Not-A-Number)。
属性特性 | 布尔值 |
---|---|
writable | false |
enumerable | false |
configurable | false |
NaN
是一个全局对象的属性。NaN
属性的初始值就是 NaN
,和 Number.NaN
的值一样。NaN
。通常都是在计算失败时,作为 Math
的某个方法的返回值出现的(例如:Math.sqrt(-1)
)或者尝试将一个字符串解析成数字但失败了的时候(例如:parseInt('blabla')
)。返回 NaN
的情况总结:
不可使用等号运算符来判断一个值是否为 NaN
。必须采用 Number.isNaN()
或 isNaN()
函数进行判断。
在执行自比较中,NaN
是唯一与自身不全等的值。
NaN === NaN;// falseNumber.NaN === NaN;// falseisNaN(NaN);// true;isNaN(Number.NaN);// true;
function valueIsNaN(v) {return v !== v;}valueIsNaN(1);// falsevalueIsNaN(NaN);// truevalueIsNaN(Number.NaN);// true
使用 isNaN()
前先检查一下这个值是否是数字类型,即可避免隐式类型转换的问题。
function detectIsNaN(value) {return typeof value === 'number' && isNaN(value);}