判断一个数是否是NaN都会想到NaN===NaN 判断是否相等,可是这个方法是不行的。那为什么这个方法是不行的呢,其实从字面意思理解就ok了。NaN(not a number),意思是不是一个数字,不是一个数字和另外一个不是一个数字相比较。这个好像没法比较吧,字符串 aaaa (not a number),字符串bbbb (not a number) 这两个字符串都是NaN,那你说它俩相不相等呢。显然是不相等的。
还有一个方法,js提供了isNaN() 的方法,判断是否是NaN,但是有一个问题,isNaN只能判断是不是NaN并不能判断这个变量是否是数字。比如:
isNaN('a'); true
这个效果不是我想看到的。
所以我们还是要手动处理一下,使用isNaN前面先判断一下变量是否是number类型的
function IsNaN(value) {
return typeof value === 'number' && isNaN(value);
}
这样如果变量是number类型的前提下再满足isNaN就可以了。其他的属性类型一概返回false;
console.log(IsNaN('a'));//false
console.log(IsNaN(0));//false
console.log(IsNaN(NaN));//true