number(数字类型)
数字类型包含:常规数字、NaN
1、NaN
NaN:not a number(不是一个数,但是它属于数字类型)
NaN和任何值(包含自己)都不相等,NaN != NaN, 所以我们不能用相等的方式判断是否为有效数字
2、isNaN
isNaN:检测一个值是否为非有效数字,如果不是有效数字返回true,反之为有效数字返回false
isNaN(10) // false
isNaN('aa') // true
isNaN('10') // false
在使用isNaN进行检测的时候,首先会验证检测的值时候为数字类型,如果不是,先基于Number()这个方法,把值转换成数字类型,然后再检测
3、Number把其他类型值转换为数字类型
(1)通过Number把字符串转为数字,只要字符串中包含任意一个非有效数字字符(第一个点除外)结果都是NaN;空字符串会转化为数字零
Number("12.5") // 12.5
Number("12.5px") // NaN
Number("12.5.5") // NaN
Number("") // 0
(2)把布尔值转为数字
Number(true) // 1
Number(false) // 0
(3)把null和undefined转为数字
Number(null) // 0
Number(undefined) //NaN
(4)把引用类型数据转换为数字,是先把他基于toString方法转换为字符串,然后再转换为数字
Number({name: '10'}) // NaN
{name: "10"}.toString() // "[object Object]"
Number([ ]) // 0
Number([12, 23]) // NaN
[ ].toString() // ""
[12, 23].toString() // "12,23"
4、parseInt和parseFloat把字符串转成数字
也是转换为数字的方法,如果参数不是字符串,会先转成字符串,对于字符串来说,它是从左到右依次查找有效数字字符,直到遇到非有效数字字符,停止查找,把找到的当做数字返回
parseInt("12.5px") // 12
parseFloat("12.5px") // 12.5
parseFloat(true) // NaN