JS的ParseInt()函数错误
2013-04-02 15:55
357 查看
今天测试提一个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给优化了。
其实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给优化了。
相关文章推荐
- js学习之parseInt()函数
- js 属性与函数 Microsoft JScript 运行时错误: 缺少函数
- js的四舍五入实现和parseInt 函数小bug
- JS中parseInt()、random()及Math.cell()函数的学习
- js捕捉函数中的错误(利用try。。。catch)
- Thin的DateChooser代码学习(关于js的函数参数为一个完整的函数以及“对象不支持此属性或方法”错误的解决)(原创,转载请声明)
- JS学习笔记1——不要使用JavaScript内置的parseInt()和Number()函数,利用map和reduce操作实现一个string2int()函数
- js 调用applet函数创建文件错误。
- js中的parseInt()函数
- JS函数中使用this的错误
- 关于JS函数parseInt()说明
- js字符转换成整型 parseInt()函数规程Number()函数
- js中parseInt函数浅谈
- js函数 Number()、parseInt()、parseFloat()的区别:
- 关于js的parseInt方法自动计算错误
- 关于JS中的parseInt("099")函数解惑
- js函数没有错误,controller也没错误,但是页面不显示返回的json数据。
- js基础知识四(Number()函数、parseInt()函数、parseFloat()函数)
- 【JS】函数 Number()、parseInt()、parseFloat()以及Number.toFixed(x) 、 Number.toPrecision(x) 、 Math.Round(x)
- js 函数 parseInt(numString, [radix])