有两种情况会出现NaN
- 1.隐式转换失败:
在表达式中出现-、*、/等数学运算符时,JS引擎会在计算之前隐式转换运算符两边的变量为number类型(创建一个包装对象?),有一个转化失败的运算结果都是返回NaN - 2.强制转换失败
通过使用parseInt、parseFloat或Numer将一个非数值类型转换为数字时,(注意点:Number转换要严格于前两者)
当一个表达式返回了NaN时,表示该表达式中转化的变量接着返回了无效的结果,并不是说返回了一个确切的值,如果非要是说NaN是一个值的话,那么NaN就是除去数值以外的一个不确切的值,正则表达值可以描述为[/^\d/]。所以NaN!=NaN,因为它表示的只是一个范围;
注意点:和NaN不同的是,undefined和null都各自表示的唯一确切一种状态值;