0

重複の可能性:
JavaScript parseInt 8 進数バグの回避策

このスクリプトを考えると:

<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先頭にゼロがある文字列を 8 進数として解析するためです。これを回避するには、次のradix引数を使用しparseIntます。

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

その中で実行するブラウザは仕様を正しく実装しておらず、それらを 8 進数として解析しようとするため、結果として0

IE9 と safari 6 で問題なく動作します。2 番目のパラメーターを渡すと、すべてのブラウザーで正しくなります。

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