JavaScript で以下を実行してみてください。
parseInt('01'); //equals 1
parseInt('02'); //equals 2
parseInt('03'); //equals 3
parseInt('04'); //equals 4
parseInt('05'); //equals 5
parseInt('06'); //equals 6
parseInt('07'); //equals 7
parseInt('08'); //equals 0 !!
parseInt('09'); //equals 0 !!
JavaScript が先頭のゼロが8 進数の整数を示していると考える難しい方法を学びました。基数 8 には"8"
orがないため"9"
、関数はゼロを返します。好むと好まざるとにかかわらず、これは仕様によるものです。
回避策は何ですか?
注:完全を期すために、解決策を投稿しようとしていますが、それは私が嫌いな解決策なので、他の/より良い回答を投稿してください。
アップデート:
JavaScript 標準の第 5 版 ( ECMA-262 ) では、この動作を排除する重大な変更が導入されています。Mozilla には良い記事があります。