1. ホーム
  2. ジャバスクリプト

[解決済み】JavaScriptのparseIntの8進数動作を回避するにはどうしたらいいですか?

2022-03-31 04:33:49

質問

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" または "9" をBase-8で表現した場合、この関数は0を返します。好き嫌いは別として これは意図的なものです .

回避策はありますか?

注:念のため、これから解決策を投稿しますが、私が嫌いな解決策なので、他の/より良い答えを投稿してください。


更新しました。

JavaScript規格の第5版( ECMA-262 ) は、この動作をなくすためのブレークスルーの変更を導入しています。Mozilla は ライトアップ .

解決方法は?

これは、Javascriptの一般的な不具合で、簡単な解決策があります。

ただ ベースを指定します。 のように、'radix' と呼ばれる。

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

を使用することもできます。 番号 :

Number('08'); // 8