Get to know MDN better
このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。
この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。2015年7月以降、すべてのブラウザーで利用可能です。
グローバルの undefined プロパティはプリミティブ値の undefined を表します。これは JavaScript におけるプリミティブ型の一つです。
プリミティブ値の undefined です。
| 書込可能 | 不可 |
| 列挙可能 | 不可 |
| 設定可能 | 不可 |
undefined は、グローバルオブジェクトのプロパティです。すなわちグローバルスコープ内の変数です。
古いブラウザーを除くすべてのブラウザーでは、 undefined は、設定不可、書込不可のプロパティとなります。 (そうでない場合でも、上書きは避けてください。)
まだ値が代入されていない変数は undefined 型となります。評価しようとしている変数に値が代入されていない場合、メソッドや文も undefined を返します。値を return しない関数も undefined を返します。
メモ: グローバルスコープ以外のスコープでは undefined を識別子 (変数名) として使うことができますが (undefined は予約語でないため)、コードの管理やデバッグが困難になるためおすすめできません。
undefined と厳密等価・非等価演算子を使って、変数に値があるか調べることができます。次のコードでは、変数 x が定義されていないため、 if 文は true に評価されます。
メモ: ここでは、標準の等価演算子ではなく厳密等価演算子を使わないといけません。厳密等価演算子とは違い、 x == undefined は、 x が null であるかどうかもチェックするからです。 null は undefined と等しくありません。
詳しくは、等価比較と同一性を参照してください。
代わりに、 typeof を使用することができます。
typeof を使う理由の一つとして、こちらは変数が宣言されていなくてもエラーにはなりません。
しかし、もう一つの選択肢があります。 JavaScript は静的にスコープされた言語なので、変数が宣言されているかどうかを知るには、それが含まれるコンテキストで宣言されているかどうかを見ることで読み取ることができます。
グローバルスコープはグローバルオブジェクトに結びつけられているので、グローバルコンテキストに変数が存在するかどうかのチェックは、グローバルオブジェクトにプロパティが存在することを、 in 演算子を使用してチェックすることで行うことができます。
3 つ目の方法として、void 演算子があります。
| ECMAScript® 2027 Language Specification # sec-undefined |
ブラウザー互換性一覧表を表示するには、JavaScript を有効にしてください。
より良いインターネットのための青写真。
このコンテンツの一部は、©1998–2026 個人の mozilla.org 協力者です。コンテンツはクリエイティブ・コモンズ・ライセンスのもとで利用できます。