JavaScriptのNaNとは?数値にならないことを示す特別な値を解説
JavaScriptで数値を扱う際に、NaN(Not a Number)という特別な値が返されることがあります。
NaNは「数値ではない」という意味を持ち、数値計算で予期せぬエラーを防ぐために重要な役割を果たします。
この記事では、NaNとは何か、どのような時に発生するのか、判定方法や注意点についてわかりやすく解説します。
NaNとは?
NaN は「Not a Number」の略で、「数値に変換できない結果」を示す特殊な値です。
JavaScriptでは typeof NaN
は "number" と返されますが、実際には「無効な数値」という扱いになります。
console.log(typeof NaN); // "number"
NaNが発生する主なケース
- 数値にならない文字列を数値として扱ったとき
- 数学的に意味のない計算をしたとき
例1:数値に変換できない文字列
let result = Number("abc");
console.log(result); // NaN
例2:0で0を割る
console.log(0 / 0); // NaN
NaNの判定方法
NaNは非常に特殊な値で、NaN === NaN
は false
になります。
console.log(NaN === NaN); // false
そのため、NaNの判定には isNaN()
や Number.isNaN()
を使います。
isNaN()(型変換あり)
isNaN("abc"); // true("abc" → NaN → true)
isNaN(123); // false
Number.isNaN()(型変換なし・より正確)
Number.isNaN("abc"); // false
Number.isNaN(NaN); // true
Number.isNaN()
の方が厳密で安全です。
NaNはFalsy値
NaNは、条件分岐などで false として扱われる「Falsy値」の一つです。
if (!NaN) {
console.log("NaNはfalseとして扱われます");
}
NaNを扱うときの注意点
- 計算結果がNaNになると、以降の処理が誤動作する可能性がある
- 文字列の数値変換時は
Number()
や parseFloat()
の結果をチェックする
- 必ず
Number.isNaN()
を使って正確に判定する
まとめ
- NaNは「数値ではない」ことを示す特殊な値
- 数値変換に失敗したときや無効な計算で発生する
NaN === NaN
は false になる
- 判定には
Number.isNaN()
を使うのが安全
- NaNはFalsy値としても扱われる
NaNは一見シンプルなようで、意外と落とし穴が多い値です。
正しく理解し、isNaN()
や Number.isNaN()
を上手に使って、安全な数値処理を行いましょう。