2
私はグローバル変数xを作成しようとしていると言う理由をJavaScriptでグローバルオブジェクトを作成:が存在しない場合、私は、このキーワードを指定する必要があります
x = x || {}; //This fails. x is not defined
this.x = this.x || {}; //But this works
私はこれを実行していますFirebugで1行目が失敗したことに驚きました。私はxがグローバルウィンドウオブジェクトにアタッチされることを期待しましたが、this
を指定しないと動作しませんでした。
言語の理解を深めたいと思っています。誰かがなぜこれが私に説明できますか?
ありがとうございました。あなたが宣言されていない変数式の一部を試してみて、使用している場合
'x'は宣言されていないためです。あなたが 'var x;'と 'x = x || {} ' 'this'を使用しているときは、* variable *ではなく* property *(グローバルオブジェクトの)として' x'にアクセスしているので、この問題はありません。 – ZER0
'x 'への参照を' window 'に効果的に追加しているので、' this.x'は機能します。グローバルスコープでは、 'this'は' window'を指します。 – Benno