number数字数据类型
包含:常规数字 、NaN
NaN
not a number :不是一个数 ,但它隶属性数字类型
NaN和任何值(包括自己)都不相等:NaN != NaA ,所以我们不能用相等的方式判断是否为有效数字
isNaN
检测一个值是否为非有效数字,如果不是有效数字返回TRUE,反之是有效数字返回FALSE
在使用 isNaN 进行检测的时候,首先会验证检测的值是否为数字类型,如果不是,先基于Number()这个方法,把值转换为数字类型,然后再检测
把其他类型值转换为数字类型
- Number( [ val ] )把字符串转换为数字,只要字符串中包含任意一个非有效数字字符(第一个点除外)结果都是NaN,空字符串会变为数字0
//布尔转换为数字
console.log(Number(true));//1
console.log(Number(false));//0
console.log(isNaN(false));//false
console.log(isNaN(false));//false
```
console.log(Number(null));//0
console.log(Number(undefined));//NaN
//把引用数据类型转化位数字,是先把他基于toString方法转化为字符串,然后再转换为数字
console.log(Number({name:'XXX'}));//NaN
console.log(Number({}));//NaN
//{}/{xxx:'xxx'} .toString() => "[object Object]" => NaN
console.log(Number([]));//0
//[].toString() ->''
console.log(Number([12]));//12
//[12].toString() ->'12'
console.log(Number([12,23]));//NaN
//[12,23].toString() ->'12,23'
- parseInt / parseFloat ( [ val ] ,[ 进制 ] ): 也是转换为数字的方法,对于字符串来说,它是从左到右依次查找有效数字字符,直到遇到非有效数字字符,停止查找(不管后面是否还有数字,都不在找了),把找到的当做数字返回
- == 进行比较的时候,可能要出现把其他类型值转换为数字