nullとundefined
実はよくわかっていなかったnullとundefined。
自分でプログラムを組む時はjavaの癖でnullの方をよく使う。けどjavascriptでヌルポが起こる時は決まって「undefined」だと怒られる。この2つの違いを実験。
・・・と思ったんですが、全く同じ実験が既にされていました。
http://d.hatena.ne.jp/cloned/20060505
どちらも特殊な型のようですね。「===」がなんだったか忘れてたけど思い出した。以下の例を見てもらえば「==」との違いが分かるはず。より厳密なチェック。
console.info('1' == 1); // true console.info('1' === 1); // false console.info(undefined == null); // true console.info(undefined === null); // false
ってことでjavascriptにおいてはnullでもundefinedでも「==」使っている限りはどっちでも動くって事が分かりました。
けど両者に違いはあって、オライリーのjavascript本によると、
null変数とは、定義されたが、まだ値が代入されていない状態の変数。
undefinedとは、変数は宣言されたがまだ初期化されていない状態。
です。
var hoge; console.info(hoge === undefined); // true console.info(hoge === null); // false
確かにhogeはundefinedだ。
余談
そうそう余談ですが、nullにちょっと期待してしまいました。
console.info(typeof null);
ってやったら「object」っていうからプロパティ持てるの!?って思って以下のようにしたらエラー。
var hoge = null; hoge.name = 'taro';
ま、これが通っちゃうと訳が分からなくなるのでこれでいい。やっぱnullは特別なオブジェクトってことですね。