JavaScriptのnull型とundefined型

Pocket

JavaScriptのnull型とUndefined型は分かりづらい部分があるのでメモ。

// ■ Null型
// nullはオブジェクトが何も参照していない状態。
// Null型の値は唯一null。
// nullは明示的に設定する(パーフェクト JavaScript p61)。
var o = {};
console.log(typeof o); // object

o = null; // nullを設定
console.log(o); // null

console.log(typeof o); // typeof nullの値はobjectになる。nullを設定したのになぜか(バグ?)。

console.log(o === null); // true
console.log(o == undefined); // ==演算子はなぜかtrue

// typeof nullはobject、null == undefinedはtrueになるので
// nullの判定は===を使う。

// ■ undefined型
// undefined型の値はundefinedのみ
// undefined == null  =>  trueを返す
// undefined === null =>  falseを返す
// undefindは未定義値というより未設定値

// 定義だけした変数を参照
// undefindは未定義値というより未設定値
var x;
console.log(x); // undefied

// 定義していない変数を参照。
try {
    console.log(y); // 例外発生 ReferenceError
} catch (e) {
    console.log('name: ' + e.name + ',' + ' message: ' + e.message + ', toString: ' + e.toString());
}

console.log(typeof x === 'undefined'); // true
console.log(typeof x == 'undefined'); // true
console.log(x === undefined); // true
console.log(x === null); // false
console.log(x == null); // true ※わかりづらい仕様
// undefined == nullなので
// undefinedかどうかの判定は===を使う
// しかしundefinedは予約語ではなく単なる変数なので上書きされる可能性がある。
// その点を考えると===もあまりよくない。

// undefineの判定は typeofを使って判断する ===のほうが良い。

配列は

var arr = [];
if (arr instanceof Array === true) {
    // 配列
}

コメント

No comments yet.

コメントの投稿

改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。