nullとundefined

JavaScript全般の話になりますが、nullとundefinedの関係について。

nullもundefinedも独立したデータ型です。これらに関しては、JavaScriptは明確に分けて定義していますが、スクリプト上では同じように使用することができます。

var me = null;

alert(me == undefined);

結果は「true」です。しかし先にも書いたようにJavaScriptはこの両者をデータ上明確にわけています。

alert(null === undefined);

これは「false」となります。この結果はJavaScript上定義されているので、こういうものであるということで理解するよりないと思います。

しかしnullはプロパティを持たないオブジェクトで、undefinedはグローバル変数です。よってundefinedは上書きできていまいます。

undefined = null;

alert(null === undefined);

しかもグローバル変数なのでうっかり上書きしてしまったり、そういうスクリプトを実行してしまった場合はずっとその値が残り、その後のundefinedを予期するスクリプトにことごとくあく影響を与えます。もし不安であればスクリプトの初期化時に

undefined = void 0;

などとして未定義値にしておけばいいのですが、実際にundefinedを上書きしてるなんてロクなスクリプトじゃないのでとっとと該当箇所を修正すべきです。

typeofで判定した場合にはundefinedは文字列"undefined"を返します。nullは文字列"object"を返します。

alert(typeof undefined == typeof null);

結果は「false」です。

この記事はサイトオーナーのブログより一部修正して転載いたしました。オリジナルの記事はこちらで読めます。

http://hiroshisaito.net/blog/after-effects-scripting-notes.html