parseInt()详解
parseInt接收两个参数 parseInt(string,radix?);
- string:要被解析的值。如果参数不是一个字符串,则其转换为字符串(tooString)。字符串开头的空白符将会被忽略。
- radix:可选参数。从2到36,表示被解析的值的进制。
基本用法
1-基本用法:当只接受一个参数值时,可以默认第二个参数值是10,此时parseInt的返回值只有两种可能,不是一个十进制数就是NaN
- a.将字符串转为整数:
let a = parseInt('12'); console.log(a);//12
- b.如果字符串头部有空格,空格会被自动去除:
let a = parseInt(' 90'); console.log(a);//90
- c.如果字符串头部不是字符串,则会先转为字符串再转换。
- d.字符串的第一个字符不能转化为数字,返回NaN:
let a = parseInt("aa99"); console.log(a);//99
- e.字符串转为整数的时候,是一个个字符一次转换,如果遇到不能转为数字的字符,就不能再进行下去,返回已经转好的部分:
parseInt('99aa'); // 99
- f.如果字符串以0x或0X开头,parseInt会将其按照十六进制数解析:
let a = parseInt("0x19");//25
- g.r如果字符串以0开头,将其按照十进制解析:
let a = parseInt("019");//19
- h.如果参数以0开头,但不是字符串,则会将数值转换成字符串,然后解析,见规则c;
parseInt(011); // 9 // 解释一下,(011).toString()得到的结果是‘9’,具体原因请查看我的博文中有介绍toString方法
-i.对于那些会自动转为科学计数法的数字,parseInt会将科学计数法的表示方法视为字符串,因此导致一些奇怪的结果:parseInt(1000000000000000000000.5); // 1// 等同于parseInt('1e+21'); // 1parseInt(0.0000008); // 8// 等同于parseInt('8e-7'); // 8
2-进制转换(接收两个参数),parseInt方法可以接收第二个参数(2到36之间),表示被解析值的进制,返回该值对应的十进制数。默认情况下,parseInt的第二个参数为10,即默认是十进制转十进制 - a.第一个参数解析规则参照第1条基本用法
- b.如果第二个参数不是数值,会被自动转为一个整数。这个整数只有在2到36之间超出这个范围,则返回NaN。如果第二个参数是0、undefined和null,则直接忽略:
let a = parseInt('19',10);//19 let b = parseInt('11',2);//3 let c = parseInt('17',8);//15 let d = parseInt('1f',16)//25 let e = parseInt('-99',0); let f = parseInt('-99',null);//-99 let g = parseInt('-99',undefined);//-99 console.log(a,b,c,d,e,f,g)//-99