[解決済み] javascriptのグローバル変数とwindow.variableの違いは何ですか?
質問
backbone.jsのドキュメントを読んでいると、windowオブジェクトに属性を割り当てるコードがたくさん出てくるのですが、これは何ですか?
window.something = "whatever";
このコードを呼び出すことと、このように変数を代入してグローバルなvarを作成することの違いは何でしょう。
something = "whatever";
スコープの違いやオブジェクトの所有権の違い(windowが所有者である場合とそうでない場合)があると思いますが、2つの間の詳細と、なぜwindowを使用する場合と使用しない場合の違いに興味があります。
どのように解決するのですか?
違いはありません。どちらも同じ効果です(ブラウザ上では
window
はグローバルなコンテキストである
1
).
-
window.foo = "bar"
プロパティを設定します。foo
にwindow
. -
foo = "bar"
は タイプミス または意図的にグローバルにしています。
誤字かどうかダブルチェックしなければならないので、個人的にはもっと
読みやすい
を設定します。
window.foo
を直接設定します。
また、ES5のストリクトモードでは
foo = "bar"
は不正な代入であるため
foo
が宣言されていないため、不正な代入となります。
Error
.
編集してください。
コメントで指摘されているように
foo = "bar"
はスコープチェーンの上流で変数
foo
で再割り当てします。
"bar"
に再割り当てします。見つからなければ、新しいグローバル変数を作成します。
また
window.foo = "bar"
を使うと、オブジェクトにプロパティを割り当てているだけなので、削除する場合は
delete window.foo
.
ES5ストリクトモードでは
無効
から
delete
を変数に追加します。
1
node.js や Web Workers などの他の環境では、グローバルオブジェクトに別の名前がついていて
window
が全く存在しない場合もあります。Node.jsでは
global
を使用し、Web Worker では
self
.
関連
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] let "と "var "の使い分けは?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] とは何ですか! (not not)演算子とは何ですか?
-
[解決済み] JavaScriptで現在のURLを取得する?
-
[解決済み] callとapplyの違いは何ですか?
-
[解決済み] Bowerとnpmの違いは何ですか?
-
[解決済み] bootstrap のポップオーバーがすべての要素の上に表示されない
-
[解決済み] アサインの左側にJavascriptのオブジェクトブラケット表記({ ナビゲーション } =)があります。
-
[解決済み] Javascript 空の配列の削減
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] javascriptで2つの数値を連結する方法は?
-
[解決済み] reactのrender関数でdynamic hrefを作成するには?
-
[解決済み] CORS OriginヘッダーとCSRFトークンによるCSRF保護
-
[解決済み] 文字列がhtmlであるかどうかをチェックする
-
[解決済み] jQueryの$という記号の意味は何ですか?
-
[解決済み] Javascriptで動的に命名されたメソッドを呼び出すにはどうすればよいですか?
-
[解決済み] Reactメモを使うべきではない場合とは?
-
[解決済み] AJAX Mailchimp サインアップフォームの統合
-
[解決済み] $.ajax実行中にローディングイメージを表示する
-
[解決済み] V8 Javascript エンジンのスタンドアロン実行