表示されているページは、編集用 バージョンの MDN Web Docsです

MDN Web Docs のユーザーとして表示: https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/NaN

グローバルプロパティ NaN非数 (Not-A-Number) を表す値です。

NaN のプロパティ属性
書込可能 不可
列挙可能 不可
設定可能 不可

解説

NaNグローバルオブジェクトのプロパティです。言い換えれば、グローバルスコープにある変数です。

NaN の初期値は非数であり、Number.NaN の値と同等です。最近のブラウザーであれば、 NaN は設定、書き込みがともに不可能なプロパティとなっています。そうでない場合であっても、オーバーライドは無効となります。プログラムの中で NaN を使用するのは、むしろまれなことです。

NaN を返す演算には5種類があります。

  • 数値が解釈できない (例えば parseInt("blabla") または Number(undefined))
  • 結果が実数にならない数学演算 (例えば Math.sqrt(-1))
  • オペランドが NaN (例えば 7 ** NaN)
  • 不確定形 (例えば 0 * Infinity)
  • 文字列が関わる加算以外の何らかの演算 (例えば "foo" / 3)

NaN に対するテスト

NaN は別の NaN 値を含むあらゆる数と (==!====!== によって) 同じではないと比較されます。ある値が NaN かどうかを的確に判定するには Number.isNaN()isNaN() を使用してください。あるいは自己比較を実行しましょう。 NaN は、また NaN だけが、自身と同等ではないと比較評価されます。

NaN === NaN;        // false
Number.NaN === NaN; // false
isNaN(NaN);         // true
isNaN(Number.NaN);  // true
Number.isNaN(NaN);  // true

function valueIsNaN(v) { return v !== v; }
valueIsNaN(1);          // false
valueIsNaN(NaN);        // true
valueIsNaN(Number.NaN); // true

ただし、 isNaN()Number.isNaN() には違いがあることに気をつけてください。前者は、値そのものが NaN であったり、値の変換の結果 NaN になる場合に true を返します。後者は値そのものが NaN のときにだけ true を返します。

isNaN('hello world');        // true
Number.isNaN('hello world'); // false

加えて、配列メソッドの中には NaN を見つけることができるもの、できないものがあります。

let arr = [2, 4, NaN, 12];
arr.indexOf(NaN);                      // -1 (false)
arr.includes(NaN);                     // true
arr.findIndex(n => Number.isNaN(n));   // 2

仕様書

仕様書
ECMAScript (ECMA-262)
NaN の定義

ブラウザーの互換性

Update compatibility data on GitHub
デスクトップモバイルサーバー
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung InternetNode.js
NaNChrome 完全対応 1Edge 完全対応 12Firefox 完全対応 1IE 完全対応 4Opera 完全対応 4Safari 完全対応 1WebView Android 完全対応 1Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 10.1Safari iOS 完全対応 1Samsung Internet Android 完全対応 1.0nodejs 完全対応 0.1.100

凡例

完全対応  
完全対応

関連情報

ドキュメントのタグと貢献者

最終更新者: mfuji09,