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.
改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。