Get to know MDN better
このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2015年7月.
NaN はグローバルプロパティで、非数 (Not-A-Number) を表す値です。
Number.NaN と同じ数値です。
| 書込可能 | 不可 |
| 列挙可能 | 不可 |
| 設定可能 | 不可 |
NaN はグローバルオブジェクトのプロパティです。言い換えれば、グローバルスコープにある変数です。
最近のブラウザーでは、NaN は構成不可かつ書き込み不可のプロパティです。そうでない場合でも、これを上書きすることは避けてください。
NaN を返す演算には 5 種類があります。
NaN とその挙動は JavaScript が発明したものではありません。浮動小数点演算におけるその意味づけ(NaN !== NaN を含む)は IEEE 754 によって指定されています。NaN の挙動には以下が含まれます。
NaN は JavaScript で偽値の値の一つと同時にあります。
ある値が NaN かどうかを判断するには、Number.isNaN() または isNaN() を使用すると最も明確に判定できます。あるいは、NaN は自身と等しくない唯一の値であるため、x !== x のような自己比較で検査することも可能です。
ただし、 isNaN() と Number.isNaN() には違いがあることに気をつけてください。前者は、値そのものが NaN であったり、値の変換の結果 NaN になる場合に true を返します。後者は値そのものが NaN のときにだけ true を返します。
同じ理由で、長整数値の場合は isNaN() ではエラーが発生しますが、 Number.isNaN() では発生しません。
さらに、配列メソッドの中には NaN を探せないものもあれば、探せるものもあります。具体的には、インデックス検索メソッド(indexOf()、lastIndexOf())は NaN を探すことはできませんが、値検索メソッド(includes())は探すことができます。
NaN とその比較について詳しくは、等価性の比較と同一性を参照してください。
2 つの浮動小数点数が異なる二進表現を持ちながらも両方とも NaN となる可能性があります。これは IEEE 754 エンコード方式において、指数が 0x7ff で仮数部が0でない浮動小数点数はすべて NaN となるためです。JavaScript で、型付き配列を使用してビット単位の操作を行うことができます。
NaN は数学演算を通じて伝播するため、通常は計算の最後に一度 NaN を検査するだけでエラー状態を検出できます。NaN が黙って無視される唯一の場合は、指数が 0 のべき乗を使用する場合であり、この場合基数の値を検査せずに即座に 1 を返します。
| ECMAScript® 2027 Language Specification # sec-value-properties-of-the-global-object-nan |
Enable JavaScript to view this browser compatibility table.
This page was last modified on 2026年2月20日 by MDN contributors.
Your blueprint for a better internet.
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2026 by individual mozilla.org contributors. Content available under a Creative Commons license.