未定義のグローバル変数やグローバル関数を呼び出したときに、エラーになるのではなくて、undefined
を得る方法をメモしておきます。確実にundefined
を得ることができれば、簡単に条件分岐を書くことができます。問題/解答形式にしてみましたので是非挑戦ください。
問い
以下のJavaScriptをconsole *1で実行したとき、どのような結果が返されますか。ただし、問題中のwindow
はグローバルオブジェクトのWindowオブジェクト
を表します(標準で定義されています)。
(1) var a が未定義のとき, a; (2) var b = {} のとき, b.c; (3) var a が未定義のとき, window.a;
答え
(1) ReferenceError: a is not defined (2) undefined (3) undefined
consoleで実行した結果
よってグローバル変数を正しくundefined
判定するためには、(3)のようにwindow.
をつけて呼び出せばよいことがわかります。
まとめ
「未定義でない変数やオブジェクト」を「ブラウザが知っているもの」と表すことにして自己流にまとめると、実行する式と結果の組み合わせは、
ブラウザが知っているもの
.ブラウザが知らないもの
→ undefined(いきなり)ブラウザが知らないもの
→ エラー
となる。