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