number数字类型
包含:常规数字,NaN
not a number:不是一个数,但他隶属于数字类型
console.log("AA"==NaN);=>false console.log(NaN==NaN);=>false
NaN和任何值,包括自己都不相对:NaN!=NaN,所以我们不能用相等的方式判断是否为有效数字
isNaN:检测一个值是否为非有效数字,如果不是有效数组返回true,反之是有效数字返回false
在使用isNaN检测的时候,首先会验证检测的值是否为数字类型,如果不是,先基于number()这个方法,把值转换为数字类型,然后检测。
isNaN([val]) console.log(10)=>false
console.log("aa")=>ture
console.log("10")=>false
number("10")=>10=>isNaN(10)=>false
把其他类型值转化为数字类型
把字符串转换为数字,只要字符串中包含任何一个非有效数字结果都是NaN,空字符串会转换为0。
- number([val])
console.log(Number("12.5"));=>12.5
console.log(Number("12.5px"));=>NaN
console.log(Number("12.5.5"));=>NaN
console.log(Number(" "));=>0
- 布尔转换为数字
console.log(Number("true"));=>1 console.log(Number("false"));=>0 console.log(isNaN("false"));=>false
console.log(Number(null));=>0
console.log(Number(undefined));=>NaN
把引用数据类型转换为数字,是先把它基于toString方法转换为字符串,然后在转换为数字
console.log(Number({}));=>NaN
console.log(Number([]));=>0
console.log(Number([12]));=>12
console.log(Number([12,23]));=>NaN
延伸
- parseInt/parseFloat([val],[进制]):也是转换为数字的方法,对于字符串来说,它是从左到右依次查找有效数字,直到遇到非有效数字字符,停止查找(不管后面是否还有数字,都不找了),把找到的当作数字返回。
let str = "12.5px"
console.log(Number(str))=>NaN
console.log(parseInt(str))=>12
console.log(parseFloat(str))=>12.5