JavaScript では、ある識別子が未定義の場合、undefined という特殊な値を持ちます。
最近気づいた(遅い)のですが、引用符付きの “undefined” と、引用符無しの undefined では意味が異なるんですね。
まず、宣言前の識別子を undefined と比較しようとするとエラーになります。
ただし、typeof演算子を使って “undefined” という文字列と比較することはできます。
一方、宣言後は 引用符無しの undefined と、直接比較することが出来ます。
まとめると、次のような感じです。
//----------------宣言前----------------------------------- alert( variable == undefined ); // -> エラー alert( typeof variable == undefined ); // -> false alert( typeof variable == "undefined" ); // -> true var variable; // 宣言する //----------------宣言後----------------------------------- alert( variable == undefined ); // -> true variable = 0; // 値を代入する alert( variable == undefined ); // -> false
ややこしいですね~