parseInt() 的第二个参数

js的parseInt()的第二个参数大家用过吗?

在jslint语法要求下,每次被要求加第二个参数的时候总是不解,好多次都是把10填做第二个参数而没去查为什么,直到遇到个浏览器兼容性问题才豁然开朗。

将分钟的字符串转换为整形,开头为0的字符串转整形的时候会被当做8进制,IE9,chrome默认是10进制;IE6默认不是,所以就会报错:

<script>
    console.log(parseInt('09',10));    // 输出0 IE6
    console.log(parseInt('09',10));    // 输出9 chrome
</script>
图片来自网络

先看一下js的进制表示法就能理解了:

十进制直接表示,例如:1,2,3,4,5,6
八进制要加零表示,例如:00,01,02,03,04,05
十六进制要加0x表示,例如:0xA1,0x13,0xFF

再看下综合的例子:

<script>
    console.log(parseInt('010',10));    // 输出10
    console.log(parseInt('010',8));     // 输出8

    console.log(parseInt('0x10',10));    // 输出0
    console.log(parseInt('0x10',16));     // 输出16
</script>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容