JavaScriptにおけるundefined
は、値が割り当てられていない変数を示す特殊なデータ型です。undefinedとは、変数が宣言されているもののまだ値が与えられていない状態を表します。また、関数が値を返さない場合においてもundefinedが戻り値となります。
undefinedの例
ここからはundefinedがどのような場合に返ってくるのかを見てみましょう。
変数の宣言のみが行われた場合:
let a;
console.log(a); // undefined
ここではa
が宣言されていますが、値が割り当てられていないため、undefined
が出力されます。
オブジェクトの存在しないプロパティにアクセスした場合:
const obj = { name: "Alice" };
console.log(obj.age); // undefined
obj
オブジェクトにはage
プロパティが存在しないため、undefined
が返されます。
関数が値を返さない場合:
function test() {}
console.log(test()); // undefined
test
関数は何も返さないため、その戻り値はundefined
になります。
nullとundefinedの違い
undefined
とよく比較されるnull
もJavaScriptには存在しますが、null
は「何もない」状態を意図的に表現するために使われます。一方、undefined
は変数に値がまだ割り当てられていないことを示すために自動的に設定されます。
JavaScriptでのnull
とundefined
は似て非なるものです。以下にその違いを説明します。
1. 意味の違い
undefined
: 変数が宣言されたが、まだ値が割り当てられていない状態を指します。この場合は自動的に設定されます。null
: プログラマが意図的にに「値がない」ことを表すために設定する値です。
2. 型の違い
undefined
は自身の型を持っています(undefined
)。null
はオブジェクト型として扱われます。
3. 比較と演算
null
とundefined
は==
(等価演算子)で比較すると等しいとみなされますが、===
(厳密等価演算子)を使うと異なるとみなされます。
console.log(null == undefined); // true
console.log(null === undefined); // false