包含:常规数字、NaN
NaN:not a number(不是一个数,但它隶属于数字类型)
NaN:和任何值(包括自己都不相等):NaN!=NaN,所以不能用相等方式判断是否是有效数字
//console.log([val]):在控制台输出 console.log('hello world'); //==进行比较 console.log(1==2); //判断是否是一个有效数字 //NaN和任何数值都不相等,包括自己 console.log('AA'==NaN); //false console.log(10==NaN); //false
检测一个值是否为非有效数字,如果不是在则返回true,反之则false
在使用isNaN进行检测的时候,首先会验证检测的值是否为number数字类型,如果不是number()这个方法,把值转换为数字类型,然后再检测
//isNaN([val]) console.log(isNaN(10)); //false console.log(isNaN('AA')); //true //number('AA') => NaN =>isNaN(NaN) =>true console.log(isNaN('10')); //false //isNaN(number('10')) => false
Number([val])
把字符转换为数字,只要字符串中包含任意一个非有效数字字符(第一个除外)结果都是NaN,空字符串(null)变为数字0
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(flase)) //0 console.log(Number(null)) //0 console.log(Number(undefined)) //NaN //引用数据类型转换为数字,是先基于toString方法转换为字符串类型,然后再转换为数字 console.log(Number({name:'xx'})) //NaN //{}/{xxx:'xxx'}.toString() console.log(Number([])) //0 console.log(Number([12])) //12 console.log(Number([12,23])) //NaN
parseInt/parseFloat([val,[进制]])
也是转换为数字的方法,对于字符串来说,它是从左到右依次查找有效数字字符,直到遇到非有效数字字符,停止查找(不管后面是否还有数字,都不在找了),找到的当作数字返回
let str='12.9px'; console.log(Number(str)) //NaN console.log(Number(parseInt(str))) //12 console.log(Number(parseFloat(str))) //12.9 console.log(Number(parseFloat('width:12.9px'))) //NaN