nullもundefinedもどちらも値がないことを表すものだが、意味合いは異なる。
以下で、違いについてまとめる。
null
- nullはNULLというシンボル
- 意図を持って変数にnullを代入して値がないことを示す
var a = null;
console.log(a); // null
※ 空文字を代入すると空文字という値が存在していることを示す
var b = "";
console.log(b);
undefined
- 変数を宣言し、値を代入する前の値(変数に値が代入されていない)
var c;
console.log(c); // undefined
- 存在しないオブジェクトのプロパティを読み出そうとしたときの値
var object = {};
print(object.hoge); // undefined
- 存在しない配列の要素を読み出したときの値
var array = [1,2,3];
console.log(array[5]); // undefined
まとめ
nullは明示的に設定しなければ存在しない値のこと
undefinedは値の内容が存在しないときに暗黙的に設定される値のこと