JS的ParseInt()函数错误

    今天测试提一个BUG,但凡以0开头,后面接8或9的数字,系统js都给出0的结果,最后追查,认为问题可能出在parseInt(),于是上网查了一下,发现果然有'BUG'在里面。

    其实parseInt()有两个参数:parseInt(number,type),type是指要转换的进制。当你没有指定type时,一般默认是10进制,但是如果number以0开头则不同了:

    如果,number以0x开头,则type默认是十六进制。

    如果,number以0开头,后面是数字,则默认是八进制,但是8、9不是八进制数,所以就为0了。

    当然还有,0x开头除外,number中有其他字母转换就会提前结束。

    这样,举几个例子:

    parseInt('100') = parseInt('100',10) = 100

    parseInt('100a') =  parseInt('100',10) = 100

    parseInt('0100') = parseInt('100',8) =  64

    parseInt('0x100') = parseInt('100',16) = 256

    parseInt('089') = parseInt('89',8) = 0

    这个'BUG'在IE7/8存在,IE9/10没有,估计是IE给优化了。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值