Open lynxerzhang opened 6 years ago
在js里面,唯一一个不等于自己的值类型就是NaN类型,NaN类型表达了数学计算中无意义的结果,所以两个NaN值去比较是否相等是无意义的,也就是返回false。
需要注意的是,js里面检测一个值是否为NaN, 可以使用全局方法isNaN()或者是Number.isNaN(), Number.isNaN()是isNaN的加强版,它的不同之处就在于,对传入的参数进行typeof检测,只有为number类型,才会进行检测,这是和isNaN的不同之处。
console.log(Number.isNaN("1a")); //false
console.log(isNaN("1a")); //true
看下Polyfill的实现就明白了
Number.isNaN = Number.isNaN || function(value) {
return typeof value === "number" && isNaN(value);
}
//@see https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Number/isNaN