NaN(不是一个数字,但数据类型为number)是执行数学运算没有成功,返回失败的结果。
另外,NaN 不等于 NaN 。
判断方法
1.利用 NaN
是唯一一个不等于自身的特点
function _isNaN(val) {
if (val !== val) {
return true;
}
return false;
}
2.利用 ES6 中提供的 Object.is()
方法
var a = "string";
var b = 2;
var c = a/b; // NaN
Object.is(a, NaN); // false
Object.is(b, NaN); // false
Object.is(c, NaN); // true
3.使用 isNaN (不推荐, 防止在老版本的浏览器不支持isNaN方法。)
function _isNaN(val) {
if (typeof(val) === 'number' && isNaN(val)) {
return true;
}
return false;
}
注意:isNaN() 的参数如果不是 Number 类型,则会先把参数进行一次 Number 转换,所以如果直接使用,当传入字符串时,也会返回 true,即 isNaN(‘str’); // true 。