null是一个表示”无”的对象,转为数值时为0;
undefined是一个表示”无”的原始值,转为数值时为NaN
undefined出现情况:
var a; function b(x) { return x; } b(); var c = {} c.z; var d = function () {} var e = d()
null出现情况:
获取一个不存在的对象时
var f = document.getElementById('F');//没有这个dom时
NaN出现情况:
是数字类型
NaN === NaN // false Object.is(NaN, NaN) // 如果是引用类型就要看内存指向是否一致 // OR function is(x, y) { if(x === y) {// // 解决+0===-0为true的情况 return x !== 0 || y !== 0 || 1 / x === 1 / y; } else {// 如果自身都不等你与自己那就是NaN return x !== x && y !== y; } }
1. 被0除
2. 不合法的字符串转换成数值
var s = '222bb';
s++;//NaN
3. 数值过大。