奇怪的intParse行为

时间:2012-08-06 18:01:16

标签: javascript

  

可能重复:
  Workarounds for JavaScript parseInt octal bug

鉴于此脚本:

<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?

2 个答案:

答案 0 :(得分:3)

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

>>> parseInt("08")
0
>>> parseInt("08", 10)
8

答案 1 :(得分:1)

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

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

parseInt(x, 10);