0

最後の質問で、先頭に 0 がある数値は 8 進数として解析されることを発見しました。この質問は、答えは次のように述べています。

これは、単純な解決策を備えた一般的な Javascript の落とし穴です。

次のように、基数または「基数」を指定するだけです。

parseInt('08',10); // 8

これは機能しますが、数値が引用符で囲まれている場合のみです。次の例を検討してください。

var test = 0132;
alert(parseInt(test, 10));

JSFiddle: http://jsfiddle.net/VU96M/2/

その出力は「132」ではなく「90」です。

したがって、ご覧のとおり、この場合、ソリューションは機能しません。

上記の variable のように先行ゼロを持つ関数にパラメータとして渡された変数、または関数から返された変数がある場合test、それを基数 10 の値として解析するにはどうすればよいですか?

4

3 に答える 3

2

厳密モードでは、JavaScript はそのようなこと (8 進リテラルの定義) を許可しておらず、代わりに例外が発生します。JavaScript コードのデフォルト モードとして厳密モードを使用することから始めることは、本当に良い習慣です。

testまた、非厳密モードでは、 variable が 8 進数リテラルまたは 10 進数として定義されているかどうかがわからないため、orとして定義されているtest.toString(8)場合はもちろん異なる結果が得られます。test0132132

于 2013-04-01T20:19:27.373 に答える