Movatterモバイル変換


[0]ホーム

URL:


MDN Web Docs

このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

undefined

BaselineWidely available

グローバルのundefined プロパティはプリミティブ値のundefined を表します。これは JavaScript におけるプリミティブ型の一つです。

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

試してみましょう

function test(t) {  if (t === undefined) {    return "Undefined value!";  }  return t;}let x;console.log(test(x));// Expected output: "Undefined value!"

構文

js
undefined;

解説

undefined は、グローバルオブジェクトのプロパティです。すなわちグローバルスコープ内の変数です。undefined の初期値はプリミティブ値であるundefined です。

最近のブラウザー (JavaScript 1.8.5 / Firefox 4 以降) でのundefined は、 ECMAScript 5 仕様により、設定不可、書込不可のプロパティとなります。 (そうでない場合でも、上書きは避けてください。)

まだ値が代入されていない変数はundefined 型となります。評価しようとしている変数に値が代入されていない場合、メソッドや文もundefined を返します。値をreturn しない関数もundefined を返します。

メモ:グローバルスコープ以外のスコープではundefined識別子 (変数名) として使うことができますが (undefined予約語でないため)、コードの管理やデバッグが困難になるためおすすめできません。

js
//こんなことはしないこと!// "foo string" をログ出力する(function () {  var undefined = "foo";  console.log(undefined, typeof undefined);})();// "foo string" をログ出力する(function (undefined) {  console.log(undefined, typeof undefined);})("foo");

厳密等価と undefined

undefined と厳密等価・非等価演算子を使って、変数に値があるか調べることができます。次のコードでは、変数x が定義されていないため、if 文は true に評価されます。

js
var x;if (x === undefined) {  // ここの文は実行される} else {  // ここの文は実行されない}

メモ:ここでは、標準の等価演算子ではなく厳密等価演算子を使わないといけません。厳密等価演算子とは違い、x == undefined は、xnull であるかどうかもチェックするからです。nullundefined と等しくありません。

詳しくは、比較演算子を参照してください。

typeof 演算子と undefined

代わりに、typeof を使用することができます。

js
var x;if (typeof x === "undefined") {  // ここの文は実行される}

typeof を使う理由の一つとして、こちらは変数が宣言されていなくてもエラーにはなりません。

js
// 直前まで x は宣言されていないif (typeof x === "undefined") {  // エラーなしで true と評価される  // ここの文は実行される}if (x === undefined) {  // ReferenceError が発生}

しかし、もう一つの選択肢があります。 JavaScript は静的にスコープされた言語なので、変数が宣言されているかどうかを知るには、それが含まれるコンテキストで宣言されているかどうかを見ることで読み取ることができます。

グローバルスコープはグローバルオブジェクトに結びつけられているので、グローバルコンテキストに変数が存在するかどうかのチェックは、グローバルオブジェクトにプロパティが存在することを、in 演算子を使用してチェックすることで行うことができます。

js
if ("x" in window) {  // x がグローバルに定義されている場合のみ、ここの文を実行}

void 演算子と undefined

3 つ目の方法として、void 演算子があります。

js
var x;if (x === void 0) {  // ここの文は実行される}// 直前まで y は宣言されていないif (y === void 0) {  // ReferenceError: y is not defined が発生}

仕様書

Specification
ECMAScript® 2026 Language Specification
# sec-undefined

ブラウザーの互換性

関連情報

Help improve MDN

Learn how to contribute.

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp