全局属性 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);}