JS parseInt函数
parseInt接收两个参数 parseInt(string,radix?);
parseInt接收两个参数 parseInt(string,radix?);
- string:要被解析的值。如果参数不是一个字符串,则其转换为字符串(tooString)。字符串开头的空白符将会被忽略。
- radix:可选参数。从2到36,表示被解析的值的进制。
基本用法
1-基本用法:当只接受一个参数值时,可以默认第二个参数值是10,此时parseInt的返回值只有两种可能,不是一个十进制数就是NaN
a.将字符串转为整数:let a = parseInt('11'); console.log(a);//11
b.如果字符串头部有空格,空格会被自动去除:let a = parseInt(' 90'); console.log(a);//90
c.如果字符串头部不是字符串,则会先转为字符串再转换。
d.字符串的第一个字符不能转化为数字,返回NaN:let a = parseInt("aa99"); console.log(a);//NaN
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’,具体原因请自行百度.
-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
toString()方法可以根据所传递的参数把数值转换为对应进制的数字字符串。参数范围为 2~36 之间的任意整数。
var a = 32;
console.log(a.toString(2)); //返回字符串100000
console.log(a.toString(4)); //返回字符串200
console.log(a.toString(16)); //返回字符串20
console.log(a.toString(30)); //返回字符串12
console.log(a.toString(32)); //返回字符串10
如果a是以0开头的,则默认按8进制转换,0x默认按16进制转换。
var a = 032;
console.log(a.toString()); //返回字符串3*8+2=26
console.log(a.toString(10)); //返回字符串3*10+2=32
var a = 0x32;
console.log(a.toString()); //返回字符串3*16+2=50
console.log(a.toString(10)); //返回字符串3*10+2=32
注意
1.undefined和null没有toString()方法
2.布尔型数据true和false返回对应的’true’和’false’
3.字符串类型原值返回
4.数值类型的情况较复杂
4.1、正浮点数及NaN、Infinity加引号返回
1.23.toString();//'1.23'
NaN.toString();//'NaN'
Infinity.toString();//'Infinity'
负浮点数或加’+'号的正浮点数直接跟上.toString(),相当于先运行toString()方法,再添加正负号,转换为数字
+1.23.toString();//1.23
typeof +1.23.toString();//'number'
-1.23.toString();//-1.23
typeof -1.23.toString();//'number'
整数直接跟上.toString()形式,会报错,提示无效标记,因为整数后的点会被识别为小数点
0.toString();//Uncaught SyntaxError: Invalid or unexpected token
(0).toString();//'0'
(-0).toString();//'0'
(+1.2).toString();//'1.2'
(-1.2).toString();//'-1.2'
(NaN).toString();//'NaN'
对象Object类型及自定义对象类型加括号返回[object Object]
{}.toString();//报错,Unexpected token .
({}).toString();//[object Object]
({a:123}).toString();//[object Object]
Object.toString();//"function Object() { [native code] }"
function Person(){
this.name = 'test';
}
var person1 = new Person();
person1.toString();//"[object Object]"
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)