NaN(不是一个数字且数据类型为number,另外NaN != NaN)是执行数学运算没有成功,返回失败的结果。但是这个结果仍然是数字类型`
只用isNaN并不能判断,这里不包含新增的两种数据类型
let a = NaN
let b = 1
let c = true
let d = null
let e = '字符串'
let f = { name: '对象' }
let g = undefined
console.log(isNaN(a)); // true
console.log(isNaN(b)); // false
console.log(isNaN(c)); // false
console.log(isNaN(d)); // false
console.log(isNaN(e)); // true
console.log(isNaN(f)); // true
console.log(isNaN(g)); // true
使用isNaN判断NaN之前要确保这个数据是Number类型
从定义出发
function isN(n) {
if (typeof (n) === "number" && isNaN(n)) {
return true;
} else {
return false;
}
}
利用不等于自身特性
function isNaN(n) {
if (n !== n) {
return true;
} else {
return false;
}
}
es6中isNaN移植到Number上
Number.isNaN(a)
ES6中提供的Object.is()
Object.is(a, NaN)