aが未定義の場合、これは機能します。
if(window.a) {}
これがエラーをスローしている間:
if(a)
誰かが理由を説明できますか?
window.aはのプロパティでwindowあり、未定義です。aは変数であり、宣言されていません。
var変数を使用するには、最初にステートメントを使用して変数を宣言する必要があります。宣言しなかったためa、インタプリタはエラーを発生させます。オブジェクトプロパティを使用するために、オブジェクトプロパティを明示的に宣言する必要はありません。CrockfordはTheGoodPartsに次のように書いています。
オブジェクトから値を抽出しようとしたときに、オブジェクトにその名前のメンバーがない場合は、代わりに未定義の値が返されます。