ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript での parseInt の 8 進数解釈の問題を回避するにはどうすればよいですか?

JavaScript での parseInt の 8 進数解釈の問題を回避するにはどうすればよいですか?

Linda Hamilton
リリース: 2025-01-05 19:06:39
オリジナル
650 人が閲覧しました

How Can I Avoid parseInt's Octal Interpretation Issues in JavaScript?

JavaScript の 8 進数の危険: parseInt の誤動作の回避策

JavaScript の parseInt 関数は、先頭にゼロが付いている数値に遭遇するとつまずく可能性があります。この問題は、先頭のゼロを 8 進数として解釈する傾向があり、誤った結果が生じることが原因です。

例:

parseInt('01'); // 1
parseInt('08'); // 0 (invalid octal digit)
ログイン後にコピー

回避策:

  • ベースを指定(基数)

最も簡単な解決策は、数値の基数、つまり基数を明示的に指定することです。これは、parseInt の 2 番目のパラメータを使用して行うことができます:

parseInt('08', 10); // 8 (specifying base 10)
ログイン後にコピー
  • Use Number Constructor

あるいは、Number コンストラクタを使用して次のことを行うこともできます。先頭に付いているものを含む数値を解析します。ゼロ:

Number('08'); // 8
ログイン後にコピー
  • Base 10 String に変換

もう 1 つの方法は、文字列を解析する前に Base 10 に変換することです。

parseInt(parseInt('08', 8).toString(), 10); // 8 (convert octal to base 10)
ログイン後にコピー
  • 通常の使用式

正規表現を使用して先頭のゼロを削除できます:

parseInt(/^0+(.*)$/gm('008')); // 8 (match and capture non-zero digits)
ログイン後にコピー

注:

JavaScript 5th Edition (ECMA-262)、parseInt の動作が変更され、8 進数の解釈の問題が解消されました。ただし、古いバージョンの JavaScript との互換性を確保するため、先頭にゼロが含まれる数値に遭遇した場合は、上記の回避策のいずれかを使用することをお勧めします。

以上がJavaScript での parseInt の 8 進数解釈の問題を回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート