JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptで変数が整数かどうかを判定する方法をわかりやすく解説

JavaScriptである変数の値が整数かどうかを確認したい場面はよくあります。代表的な方法は、parseInt()を使って値を整数に変換し、元の値と===演算子(厳密等価演算子)で比較することです。元の値と変換後の値が完全に一致すれば、その変数は整数だと判断できます。

parseInt()を使った基本的な判定方法

parseInt()は文字列や数値を整数に変換する関数です。小数点以下を持つ数値は切り捨てられるため、元の値との比較結果が一致しなくなります。この性質を利用して、整数かどうかを判定できます。

以下のコードは、変数が整数かどうかをチェックするシンプルな例です。

<html>
   <head>
      <script>
         var a = 10;
         if (a === parseInt(a, 10)) {
            alert("整数です!");
         } else {
            alert("整数ではありません!");
         }
      </script>
   </head>
   <body>
   </body>
</html>

この例では、変数aに10という整数が代入されているため、「整数です!」というアラートが表示されます。もしaが10.5のような小数だった場合は、parseInt(a, 10)の結果が10になり、元の値と一致しないため「整数ではありません!」と表示されます。

Number.isInteger()を使うモダンな方法

ES6(ECMAScript 2015)以降では、より簡潔で安全なNumber.isInteger()メソッドが使えます。このメソッドは引数が整数であればtrue、そうでなければfalseを返します。

console.log(Number.isInteger(10));   // true
console.log(Number.isInteger(10.5)); // false
console.log(Number.isInteger("10")); // false(文字列は整数とみなされない)
console.log(Number.isInteger(NaN));  // false

注意点

  • parseInt()による比較では、文字列"10"も==ではなく===を使えば正しく判定できますが、意図しない型変換が起こる可能性があるため注意が必要です。
  • Number.isInteger()は古いブラウザ(IEなど)ではサポートされていない場合があります。レガシー環境を対象とする場合はparseInt()方式を採用しましょう。
  • 非常に大きな数値や特殊な値(InfinityNaNなど)の扱いにも留意してください。Number.isInteger(Infinity)falseを返します。

現代のJavaScript開発ではNumber.isInteger()を使うのが最も推奨される方法ですが、従来の環境との互換性が必要なケースではparseInt()との比較が有効です。用途に応じて適切な方法を選びましょう。

  1. JavaScriptでドキュメントの読み込み状態(readyState)を確認する方法

    JavaScriptでドキュメント(ページ)の読み込みが完了しているかどうかを確認するには、document.readyStateプロパティを使用します。このプロパティは、現在のドキュメントの読み込み状況に応じて以下の3つの文字列を返します。loading … ドキュメントがまだ読み込み中の状態interactive … ドキュメントの解析は完了したが、画像などのサブリソースは still 読み込み中の状態complete … ドキュメントとすべてのサブリソースの読み込みが完了した状態以下は、ボタンをクリックしたタイミングでdocument.readyStateの値を判定し、ページの読み込み状

  2. 【JavaScript】配列内に数値(整数)が含まれているかどうかを判定する方法

    はじめに本記事では、配列の中に数値型(number)の要素が含まれているかどうかを判定するJavaScript関数の実装方法を解説します。今回求められている仕様は以下のとおりです。関数は要素の配列を受け取る配列内に number 型の要素が1つでも存在するかをチェックする存在すれば true、存在しなければ false を返す実装例const arr = ["123", "", "21345", "90"];const findInteger = (arr = []) => {  cons