parseInt是用于将字符串根据基数转换成整数。
首先pa来自rseInt()衡儿开湖受函数中可以给定两个参数,第一个是要解析的数,360问答第二个是以多少进制解析。
反略守严际被例如parseInt(‘1松耐兵够0’,8)的意思为把一个8进制数10,转换成一个10进制数,最后结果当然为8.
接着我们再看个例子,parseInt(‘100’,8),把一个8进制数100,转换成一场映重质个10进制数,最后结果那便是64,记住parseInt把最后结果都是转换成10进制数。
最后再看个例子,parseInt(‘12’,2)把一个二进制数12,转换成一个10进制数度升,因为二进制数中不存在2,因此煤生跟帝赶营解析时仅仅只解析数字1就微况换船统教算,将二进制的1换成十进制,结果显然就是1.
V8中parseInt函数的源码:【只列出一部分,如需要查看请参见V8中src/conversions-in喜正除年区非划配示件宽l.h和src/comp苗只研过iler/***.cc】
if(radix==0){//如果大总握脚场境某模味传入radix是0,则以10进行处理
//Radixdetection.
radix=10;
if(*current=='0'){
++current;
if(current==end)returnSignedZero(negative);
if(*current=='x'||*current=='X'){
radix=16;
++current;
if(current==end)retur八皮治的nJunkStringV讨同然alue();
}else{
leading_zero=true;
}
志令名罗包发抗安元}
}elseif(radix==16){//16进制
if(*干践武current=='0'){
//Allow"0x"prefix.
++current;
if(curre比料nt==end)returnSignedZero(negative);
if(*current=='x'||*current=='X'){
++curren评究片卫t;
if(current==end)returnJunkStringValue();
}else{
leading_zero=true;
}
}
}
if(radix<2||ra推三务述dix>36)returnJunkStringValue();//radix不在2~36之间的处理
例如解析:
parseInt('0101',1)=>NaN
parseInt('453',2)歌且=>NaN因为453不符合二进制数字,所以无法转换出正确的数字
标签:parseInt