项目开发过程中,我们经常会用到parseInt(),但是对它的第二个参数知之甚少,下面解释下第二个参数。
首先我们先来看看w3school的解释:
解释的也很清楚,但是对于对进制不了解的同学就有点难理解了,我以8进制为例,解释下:
例:
parseInt('25', 8); //21
//'25'分为2和5,然后和8比较,均比8小
//计算:2和5的索引分别为 1,0。计算方法为2乘以8的1次方加上5乘以8的0次方
//计算公式:2*8^1+5*8^0=21
parseInt('292', 8); //2
//'25'分为2和9,然后和8比较,当大于等于8时后面的数字(包含自己)截去,所以从9开始截去,只剩2
//计算:2的索引为 0。计算方法为2乘以8的0次方
//计算公式:2*8^0=2
parseInt('9', 8)
//当第一个数就比参数大时,返回NAN
当然该方法也存在一些问题,例:
1、对于那些会自动转为科学计数法的数字,parseInt会将科学计数法的表示方法视为字符串,因此导致一些奇怪的结果。
parseInt(1000000000000000000000.5) // 1
// 等同于
parseInt('1e+21') // 1
parseInt(0.0000008) // 8
// 等同于
parseInt('8e-7') // 8
2、parseInt('010') //未定:返回 10 或 8