一、Number()
Number函数主要是用于将任何其他数据类型的值转化为数值类型。
转换规则如下:
1、如果是布尔类型的值,true转化为1,false转化为0。
console.log(Number(true)) //1
console.log(Number(false)) //0
2、如果是简单的数值型,则直接返回。
3、如果是null,则直接转化为0.
4、如果是undefined,则直接转化为NaN.
5、如果是字符串,则去掉开头和结尾的空格部分,如果仍然存在其他非数字字符,则直接返回NaN,否则返回数字。
console.log(Number(" 10")) //10
console.log(Number(" 10s")) //NaN
6、如果是字符串,前面存在0或者(+-)号。将其转换为数字。
console.log(Number("+000001")) //1
console.log(Number("-1121")) //-1121
7、如果在其中存在十六进制的字符串,则将其转化为十进制数字。
console.log(Number("0xf")) //15
8、如果是空字符串,则直接转换为0。
console.log(Number("")) //0
9、如果除了以上内容的字符串,还存在其他字符串,则直接返回NaN。
10、如果是对象类型的数据,则首先调用valueOf(),则再按照上述进行转换。如果转换的结果为NaN,则调用toString()方法再进行转换,目的就是将对象转化为基本数据类型。
二、parseInt( )
parseInt()可以将字符串转化为一个整数,与Number()相比,parseInt()还可以转化为字符串开头为数字的字符串。
其转换的规则如下:
1、如果字符串开头不是数字或者正负号,则直接返回NaN(所以当为空字符串时,则直接返回NaN)
console.log(parseInt("")) //NaN
console.log(parseInt("-10")) //-10
console.log(parseInt("+10")) //10
2、如果开头是数字或者正负号,则继续解析接下来的字符,直到找到不是该字符的字符串。
console.log(parseInt("1000de")) //1000
3、如果在开头跟着是0x后面是数字字符换,则会将其看做十六进制,转化为十进制。
console.log(parseInt("0xfss")) //15
4、parseInt()的第二个参数,表示使用多少进制来解析。
console.log(parseInt("11", 16)) //17
console.log(parseInt("11", 2)) //3
console.log(parseInt("11", 8)) //9
5、parseInt()中传入小数时,则从小数点处断开。
console.log(parseInt("11.112")) //11
console.log(parseInt("-11.22")) //-11
三、parseFloat()
parseFloat()可以解析字符串为浮点数,大体和parseInt()一致。
1、浮点数第一个小数点有效,第二个小数点就没有效了。
console.log(parseFloat("100.11.11")) //100.11
2、如果传入的参数中包含可解析的整数,不包含小数,则直接返回整数。
console.log(parseFloat("10212")) //10212
console.log(parseFloat("0xA")) //0
console.log(parseFloat("0908.5")); //908.5