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月.
グローバルの 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 |
Enable JavaScript to view this browser compatibility table.
This page was last modified on 2025年8月23日 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.