!Number.isNaN(value) は、数値の入力チェックとしては足りません。"abc" も null も通ります。number型の有限値だけを受け付けるなら、Number.isFinite(value) で確かめます。
2026年11月6日、macOS 27.2/Node.js v24.22.1で実行しました。ブラウザ・Windows・型検査は試していません。各例を .mjs に保存し、node ファイル名.mjs で実行できます。
NaNでないことと、数値であることは違う
const looksNumeric = value => !Number.isNaN(value);
console.log(looksNumeric("abc"), looksNumeric(null), looksNumeric(Infinity));
console.log(Number.isNaN(NaN), Number.isNaN("abc"));
出力:
true true true
true false
Number.isNaN が調べるのは「値がNaNそのものか」です。文字列やnullは変換しません。否定しても数値の保証にはなりません。ECMAScriptのNumber.isNaNの定義で確認できます。
グローバルのisNaNは変換してから調べる
for (const value of ["abc", "12", "", null, undefined, NaN]) {
console.log(String(value), isNaN(value), Number.isNaN(value));
}
出力(左から表示用の値、isNaN、Number.isNaN):
abc true false
12 false false
false false
null false false
undefined true false
NaN true true
3行目の先頭は空文字です。isNaN("abc") はtrueですが、isNaN("") や isNaN(null) はfalseでした。
グローバルのisNaNの定義には数値への変換が含まれます。名前の印象ではなく、変換も必要かを区別します。
number型の有限値だけを通す
for (const value of [12, 0, -2.5, "12", null, NaN, Infinity]) {
console.log(String(value), Number.isFinite(value));
}
出力:
12 true
0 true
-2.5 true
12 false
null false
NaN false
Infinity false
数値12はtrue、文字列 "12" はfalseです。Number.isFiniteの定義は有限なNumber値を対象にしています。
整数限定・負数禁止・金額の上限は別の条件です。今回も-2.5はtrueなので、業務上の妥当性まで保証しません。
入力の約束をコードで示す
「数値型で、有限で、0以上」を受け付け、確認用に1を加える例です。
function acceptAmount(value) {
if (!Number.isFinite(value) || value < 0) return "invalid";
return value + 1;
}
console.log(acceptAmount(12), acceptAmount(0));
console.log(acceptAmount("12"), acceptAmount(-1), acceptAmount(Infinity));
出力:
13 1
invalid invalid invalid
文字列の "12" も拒否する設計です。フォームの文字列を扱う場合は、空欄と変換のルールを別途決めます。
AIが入力チェックを書いたら、数値文字列・空文字・null・NaN・Infinityも渡し、「何を拒否するか」を出力で確認します。
未経験者向けの体験版を公開しています
- ▶ ライブデモ(インストール不要・無料)→ https://trial-web-ayies128s-projects.vercel.app/?ref=qiita
- 無料体験版(最初のSession 0〜3を手元で進める・⭐ Starもよろしくお願いします)→ https://github.com/ayies128/next-ai-camp-trial
- YouTube『AIエンジニア情報局』(AI×開発ニュースを1本5分で)→ https://www.youtube.com/channel/UC1rXVD9WYsQPQEWZyd-A1KA/?ref=qiita
※ 中上級者には易しすぎる内容なので、初心者の知り合いへの紹介や社内研修の参考としてどうぞ。