【JavaScript】nullとundefinedの違い

目次

はじめに

この記事ではJavaScriptにおけるnullundefinedの違いについて説明します。

Q. nullとundefinedの違いがわかりますか?

なんとなく、どちらも値がないくらいのイメージがありますが、意外と明確な違いを知らない人が多いんじゃないでしょうか?

ということでその方のために説明していこうと思います。

null

nullは意図的にオブジェクトの値が存在しないことを表します。

もう少しプログラム的に言えば、メモリ空間から解放された状態です。(メモリの参照を持たない)

// nullを明示的に入れる必要がある。
const val = null;
console.log(val);  // null

明示的に入れる必要があるので、関数の戻り値などで指定すれば、nullになります。

const val = retNull();
console.log(val2);  // null

function val() {
    return null;
}

undefined

undefinedは、初期化されていない(値が代入されていない)変数を表します。

// 宣言されてるが、初期化されていない。
const val;
console.log(val);  // undefied

その他にも、以下の場合にundefinedとなります。

  • 配列の要素数以上の要素にアクセスした場合
  • オブジェクトに存在しないプロパティにアクセスした場合
  • 戻り値のない関数が返す値

配列の要素数以上の要素にアクセスした場合

const array = [1, 2, 3, 4];
console.log(array[10]);  // undefined

オブジェクトに存在しないプロパティにアクセスした場合

  • 連想配列の場合
const dict = { 'key1': 'val1' };
console.log(dict['key2']);  // undefined
  • クラスの場合
const Human = class {
    constructor(name) {
        this.name = name;
    }
}

var nobita = new Human('Nobita');
console.log(nobita.name);  // Nobita
console.log(nobita.age);   // undefined

戻り値のない関数が返す値

const val = voidFunc();
console.log(val);  // undefined

function voidFunc() {
    return;
}

null と undefined の比較

JavaScriptには等値演算子(==)と同値演算子(===)があります。

これらの説明は割愛します。以下を参考にしてください。

nullundefinedは以下のように比較されます。

const val1 = null;
var val2;

// 等値演算子の場合
if (val1 == val2) {
    console.log("true");
} else {
    console.log("false");
}
// 実行結果:true

// 同値演算子の場合
if (val1 === val2) {
    console.log("true");
} else {
    console.log("false");
}
// 実行結果:false

等値演算子の場合、trueを返しているため、同じものとして扱います。

同値演算子の場合、falseを返しているため、異なるものとして扱います。

参考

まとめ

今回はJavaScriptにおけるnullundefinedの違いについて説明しました。

このようなちょっとした違いを知ってるだけでも技術の差は出てくるんじゃないかと思ってます。

是非、いいねやコメントをお願いします。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次