parseInt() 的第二个参数

WEB前端 132 2017-11-09 13:58

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>
parseInt() 的第二个参数-JEESNS
图片来自网络

先看一下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>
文章评论