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