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

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

構文

NaN

説明

NaNグローバルオブジェクトのプロパティです。

NaN の初期値は非数であり、Number.NaN の値と同等です。モダンブラウザであれば、NaN は設定、書き込みがともに不可能なプロパティとなっています。そうでない場合であっても、オーバーライドは無効となります。

プログラム中で NaN を使うことは非常にまれです。このプロパティは Math 関数が失敗したり (Math.sqrt(-1)) 、ある数へと構文解析しようとした関数が失敗するとき (parseInt("blabla")) に返される値です。

NaN に対するテスト

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

NaN === NaN;        // false
Number.NaN === NaN; // false
isNaN(NaN);         // true
isNaN(Number.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'); // returns 'true'.
Number.isNaN('hello world'); // returns 'false'.

仕様

仕様書 策定状況 コメント
ECMAScript 1st Edition (ECMA-262) 標準 初期定義。JavaScript 1.3 にて実装
ECMAScript 5.1 (ECMA-262)
NaN の定義
標準  
ECMAScript 2015 (6th Edition, ECMA-262)
NaN の定義
標準  
ECMAScript Latest Draft (ECMA-262)
NaN の定義
ドラフト  

ブラウザー実装状況

Update compatibility data on GitHub
デスクトップモバイルサーバー
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeEdge MobileAndroid 版 FirefoxAndroid 版 OperaiOS 版 SafariSamsung InternetNode.js
基本対応Chrome 完全対応 ありEdge 完全対応 ありFirefox 完全対応 1IE 完全対応 ありOpera 完全対応 ありSafari 完全対応 ありWebView Android 完全対応 ありChrome Android 完全対応 ありEdge Mobile 完全対応 ありFirefox Android 完全対応 4Opera Android 完全対応 ありSafari iOS 完全対応 ありSamsung Internet Android 完全対応 ありnodejs 完全対応 あり

凡例

完全対応  
完全対応

関連項目

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

このページの貢献者: segayuu, x2357, teoli, ethertank, Potappo, Mgjbot, Yuichirou
最終更新者: segayuu,