カテゴリ: JavaScript 更新日: 2025/12/25

JavaScriptのisNaN関数で数値判定する方法をわかりやすく解説

JavaScriptのisNaN関数で数値判定する方法をわかりやすく解説
JavaScriptのisNaN関数で数値判定する方法をわかりやすく解説

先生と生徒の会話形式で理解しよう

生徒

「先生、JavaScriptで入力された値が数字かどうかを調べる方法ってありますか?」

先生

「はい、それにはisNaN関数がよく使われます。数値かどうかを判定する便利な関数ですよ。」

生徒

「isNaNってどういう意味ですか?どうやって使うんですか?」

先生

「詳しく説明しますね。まずisNaNの意味と特徴から見ていきましょう!」

1. isNaN関数とは?

1. isNaN関数とは?
1. isNaN関数とは?

isNaNは「アイ・エス・ナン」と読み、「Not a Number(ナンバーじゃない)」かどうかを調べる関数です。

つまり、渡した値が「数値として扱えないもの」かどうかを教えてくれます。

判定結果は、true(真)かfalse(偽)で返ってきます。trueなら「数値ではない」、falseなら「数値として扱える」という意味です。

2. isNaN関数の基本的な使い方

2. isNaN関数の基本的な使い方
2. isNaN関数の基本的な使い方

例えば、次のように使います。


console.log(isNaN("123"));     // false(数字として扱える)
console.log(isNaN("abc"));     // true(数字じゃない)
console.log(isNaN(45));        // false(数字)
console.log(isNaN("45abc"));   // true(途中に数字以外があるので数字ではない)

文字列でも、数字の形ならfalseになりますが、文字が混じっているとtrueとなり、数値ではないと判定されます。

3. isNaNの少しややこしい特徴

3. isNaNの少しややこしい特徴
3. isNaNの少しややこしい特徴

実はisNaNは、渡された値を一度「数値に変換」しようとしてから判定します。そのため、少し予想と違う動きをすることもあります。


console.log(isNaN(""));        // false(空文字は0とみなされる)
console.log(isNaN(" "));       // false(空白も0とみなされる)
console.log(isNaN(true));      // false(trueは1に変換される)
console.log(isNaN(false));     // false(falseは0に変換される)

これらは「数値に変換できるので、数値ではない=false」となります。

4. 数値かどうかを正しく判定するには?

4. 数値かどうかを正しく判定するには?
4. 数値かどうかを正しく判定するには?

はっきり「値が数値かどうか」を調べたい時は、Number.isNaN()という別の関数が使えます。こちらは「渡した値が本当にNaNかどうか」だけを判定します。

例えば:


console.log(Number.isNaN(NaN));       // true
console.log(Number.isNaN("abc"));     // false(文字列はNaNじゃない)
console.log(Number.isNaN(123));       // false

Number.isNaN()はより厳密な判定なので、数値判定としてはこちらをおすすめします。

5. isNaNを使った実用例

5. isNaNを使った実用例
5. isNaNを使った実用例

たとえばユーザーが入力した値が数字かどうか確認したい時に役立ちます。


function checkInput(value) {
  if (isNaN(value)) {
    console.log("数字を入力してください");
  } else {
    console.log("入力値は数字です");
  }
}

checkInput("100");    // 入力値は数字です
checkInput("abc");    // 数字を入力してください

入力のバリデーション(確認)によく使う基本的な方法です。

6. isNaNのポイントと注意点

6. isNaNのポイントと注意点
6. isNaNのポイントと注意点
  • isNaNは渡した値が数値に変換できなければtrueを返す関数
  • 空文字や真偽値は数値に変換されるため、falseになる場合がある
  • より正確に数値かどうか判定したいときはNumber.isNaN()を使う
  • ユーザー入力のチェックなどに便利で、数値以外の値を検出できる

まとめ

まとめ
まとめ

isNaN関数で学んだ数値判定の考え方

ここまでの記事では、JavaScriptにおけるisNaN関数の基本的な使い方から、少し注意が必要な挙動、そしてNumber.isNaN()との違いまでを順番に確認してきました。 初心者の方にとって「数値かどうかを判定する」という処理は、とてもシンプルに見えて、実は落とし穴が多いポイントです。 特に、文字列として入力された数字や、空文字、真偽値などがどのように扱われるのかを理解していないと、思わぬ判定結果になってしまうことがあります。

isNaN関数は、渡された値を一度数値に変換してから判定するという特徴があります。 そのため、「数値として変換できるかどうか」を知りたい場面では非常に便利ですが、「見た目が数字かどうか」をそのまま判断したい場合には注意が必要です。 空文字や空白がfalseになる理由を理解できると、JavaScriptの型変換の仕組みも一緒に見えてきます。

入力チェックでの実践的な考え方

実際のWebアプリケーションやフォーム処理では、ユーザーが入力した値が正しい数値かどうかをチェックする場面が多くあります。 そのような場面でisNaNを使うと、「数字以外が入力されたかどうか」を簡単に判定できます。 ただし、より厳密にチェックしたい場合や、NaNそのものを扱う場合にはNumber.isNaN()を使い分けることが重要です。

次のサンプルは、入力値が本当に数値として使えるかどうかを確認する、初心者向けのシンプルな例です。


function validateNumber(input) {
  if (isNaN(input)) {
    console.log("数値として扱えません");
  } else {
    console.log("数値として使用できます");
  }
}

validateNumber("250");
validateNumber("test");

このように、入力チェックの段階で数値かどうかを判定しておくことで、後続の計算処理やデータ保存の際のエラーを防ぐことができます。 JavaScript初心者の方は、「入力チェックは最初に行う」という習慣をつけておくと、プログラム全体が安定しやすくなります。

Number.isNaNを使う場面の整理

記事の中でも紹介したNumber.isNaN()は、「本当にNaNかどうか」だけを判定するための関数です。 文字列や数値に変換できる値ではtrueにならないため、より厳密なチェックが可能です。 計算結果がNaNになってしまったかどうかを調べたい場合には、こちらを使う方が安全です。


let result = 0 / 0;

if (Number.isNaN(result)) {
  console.log("計算結果がNaNです");
}

このような使い分けを理解しておくことで、数値判定に関するトラブルを大幅に減らすことができます。

先生と生徒の振り返り会話

生徒

「最初はisNaNって名前だけで難しそうに感じていましたけど、実際は『数値として使えるかどうか』を調べているんですね」

先生

「そうですね。特にJavaScriptでは型変換が自動で行われるので、その仕組みを理解すると判定結果にも納得しやすくなります」

生徒

「空文字やtrueが数字として扱われるのは意外でした。でも理由がわかるとスッと理解できました」

先生

「そこに気づけたのはとても良いですね。入力チェックではisNaN、計算結果の確認ではNumber.isNaN、と使い分ける意識が大切です」

生徒

「これからは、数値判定をなんとなく書くのではなく、どの関数を使うべきか考えながら書いてみます」

先生

「その意識があれば、JavaScriptの基礎はしっかり身についていきますよ」

カテゴリの一覧へ
新着記事
New1
TypeScript
TypeScriptでパスエイリアスを設定する方法!baseUrlとpathsでコードをスッキリ整理
New2
JavaScript
JavaScriptのfor文の書き方を初心者向けにやさしく解説
New3
JavaScript
JavaScriptの関数でよくあるエラーとその解決法まとめ
New4
JavaScript
JavaScriptのイベント処理でよくあるエラーとその対処法
人気記事
No.1
Java&Spring記事人気No1
JavaScript
JavaScriptのインストール方法まとめ!Windows・Mac・Linux別にステップ解説
No.2
Java&Spring記事人気No2
JavaScript
JavaScriptのマウスイベントの使い方(click, mouseoverなど)
No.3
Java&Spring記事人気No3
JavaScript
JavaScriptのtoStringとString関数の違いを初心者向けに解説
No.4
Java&Spring記事人気No4
JavaScript
JavaScriptの純粋関数(pure function)と副作用の違いを理解しよう
No.5
Java&Spring記事人気No5
JavaScript
JavaScriptプログラムの実行方法まとめ!ブラウザ・Node.js・コンソールの使い方
No.6
Java&Spring記事人気No6
JavaScript
JavaScriptで文字列をforループで1文字ずつ処理する方法!初心者向け解説
No.7
Java&Spring記事人気No7
JavaScript
JavaScriptのDOMContentLoadedとloadイベントの違いを理解しよう
No.8
Java&Spring記事人気No8
TypeScript
TypeScriptの始め方:開発環境の構築手順【初心者向け】