0

可能重复:
JavaScript parseInt 八进制错误的解决方法

鉴于此脚本:

<script type="text/javascript">
    var noproblem07 = parseInt("07") - 1;
    alert("No problem (07): " + noproblem07);
    var problem08 = parseInt("08") - 1;
    alert("Problem (08): " + problem08);
    var problem09 = parseInt("09") - 1;
    alert("Problem (09): " + problem09);
    var noproblem10 = parseInt("10") - 1;
    alert("No problem (10): " + noproblem10);
</script>

为什么“08”和“09”解析为-1?

4

2 回答 2

3

因为parseInt将带有前导零的字符串解析为八进制。要解决此问题,请使用以下radix参数parseInt

>>> parseInt("08")
0
>>> parseInt("08", 10)
8
于 2012-08-06T18:03:25.270 回答
1

因为您在其中运行的浏览器没有正确实现规范并尝试将它们解析为八进制,导致0

它在 IE9 和 safari 6 中运行良好。您可以传递第二个参数以使其在所有浏览器中正确:

parseInt(x, 10);
于 2012-08-06T18:02:21.680 回答