nullとundefinedの違い

最終更新日:

このページではJavaScriptでのnullとundefinedの違いについて説明します。

nullは「値がない」ことを表す特殊な値です。 数値や文字列に対しても同じように使われます。

他の言語でも同じように「値がない」ことを表す値があります。 言語によって違いますがnullやnilです。

そしてJavaScriptでは「値がない」ことを表す値がもう1つあり、それがundefinedです。 undefinedは日本語では「未定義」と訳されます。

undefinedは初期化されていない変数の値、存在しないオブジェクトのプロパティ、 存在しない配列の要素を読み出したときの値です。 他には、戻り値のない関数が返す値、 関数を呼び出す時に値が指定されていない引数の値もundefinedとなります。

どちらも「値がない」ことを表すので同じものとしても扱えますし、 別々のものとして区別して扱うこともできます。

等値演算子「==」を使うと両者は同じものとして扱われます。 同値演算子「===」を使うと両者は違うものとして扱われます。 自分が望む処理によって演算子を使い分けます。

undefinedは初期化されていない変数の値であったり、存在しないオブジェクトのプロパティ という点ではある意味エラーとも言えます。

一方nullは意図をもって「値がない」ことを表していますのでエラーではありません。 ですから「値がない」ことを設定したい場合は「null」を使ってください。

使用例

初期化されていない変数、存在しない配列の要素を読み出した場合の例を表示します。 どちらもundefinedと表示されます。

var a;

console.log(a);       // undefined

var arr = [1,2,3];

console.log(arr[5]);  // undefined

次のプログラムはnullとundefinedを等値演算子「==」と同値演算子「===」で 比較しています。前者がtrue、後者がfalseを返していることを確認してください。

var a = null;
var b;

// 等値演算子
if(a == b){
    console.log("TRUE");
}else{
    console.log("FALSE");
}

// 同値演算子
if(a === b){
    console.log("TRUE");
}else{
    console.log("FALSE");
}

// 実行結果
TRUE
FALSE