【JavaScript】NaNを解説します

スポンサーリンク

こんにちは。たいら(@tairaengineer2)です。
転職を繰り返し現在5社経験している、14年目エンジニアです。

この記事では、 JavaScriptで特殊な値であるNaNについて

  • NaNとは
  • どんなときにNaNが出るのか?
  • NaNを判定するやり方
  • NaNとnullの違い

と、丁寧に解説していきます。

前提条件:実行環境について

実行環境は以下の通りです。

OS Windows11

NaNとは

NaNとは、数字ではないということを表す特殊な値です。
NaNは「Not a Number」の略です。

NaNには以下の2つの特徴があります。

  1. 自分自身とすら等しくない
  2. number型に属している

①nullでさえ

としたらtrueで処理されるのにNaNだと

falseとして処理されます。

②ですが、数値ではない、と言いつつもNaNの型はnumber型に属します。
ややこしいですね(;’∀’)

こんな感じでNaNは、特殊な値なんです。

どんなときにNaNが出るのか?

NaNは、計算結果の意味がまったく成立しないときに出ます。

具体例を以下4つ出します。

その1:数値に変換できない文字列を演算に使った場合

サンプルプログラムはこちらです。

「abc」は数値に変換できないので、計算結果が無効になるのが理由です。

その2:0で割った場合

サンプルプログラムはこちらです。

数学的に定義されていないのが理由です。

その3:parseIntメソッドに数値に変換できない文字列を渡した場合

サンプルプログラムはこちらです。

文字列は整数に変換できないのが理由です。

その4:Math.sqrtメソッドに負の値を渡した場合

サンプルプログラムはこちらです。

負の数の平方根は定義されていないのが理由です。

NaNを判定するやり方

先ほど、ちらっと書きましたが

は、falseとして判定されるのでできません。

なので、判定するにはNumber.isNaNメソッドを使う必要があります。
typeof演算子だと、numberになってしまうので注意です!

NaNとnullの違い

NaNに似たような感じのものでnullがありますが、この2つは全く異なります。
この2つの違いを表でまとめてみました。

項目 NaN null
意味 Not-a-Number(数値ではない特殊な値) 値が存在しない
number object
number object
用途 計算の結果が無効なとき 変数に値が設定されていないとき
自分自身と比較 false true

まとめ:NaNはややこしい!

以上がJavaScriptのNaNについての解説でした!

あなたのご参考になったのなら、とても嬉しいです(*´▽`*)
ではでは~(・ω・)ノシ

コメント

タイトルとURLをコピーしました