2

Chrome javascript コンソールでバックボーン カレンダー アプリ (カレンダーにイベントを投稿できます) をいじっていて、右側 (画像を参照) に、ローカル、クロージャ、およびグローバル スコープを示すパネルがあることに気付きました。この特定のアプリでは、EventsView にデバッガーを設定すると、Chrome は Event (モデル) と EventView (特定のイベントのビュー) が Closure スコープ内にあることを通知します。

私はグローバル、クロージャ、ローカルをある程度理解しています。グローバル スコープは、グローバル名前空間内のあらゆるものになります。ローカルは、現在のスコープ内のすべての変数です。Event と EventView がクロージャー スコープ内にあることの意味と、これによりアプリがどのように機能しているかについての理解がどのように向上するかを実際的な言葉で説明できますか?これにより、どのような洞察が得られますか? また、Local スコープでは、'this' が 'child' であることがわかります。なんで?親は何でしょう?

ここに画像の説明を入力

4

1 に答える 1

5

クロージャーについては、こちらをお読みください: JavaScript クロージャーはどのように機能しますか?

しかし、簡単な答えは、以下の 6 行目のブレークポイントで一時停止していると仮定すると、変数「グローバル」がデバッグ ツールのグローバル変数セクションに表示され、「クロージャ」がクロージャ セクションに、「ローカル」がローカル セクションに表示されます。 :

1 var global = 'foo';
2
3 function bar() {
4   var closure = 'baz';
5   function oof() {
6       var local = 'rab'; // stopped on a breakpoint on this line
7   }
8 }

デバッグするときは、変数の定義を見つけるために必要なクロージャーの数、それが適用される可能性のある他のコンテキストの数、ローカル スコープで変更した場合の結果などを知るだけでも役に立ちます。

于 2012-10-21T21:01:25.587 に答える