Chrome javascript 工具:全局范围、闭包范围和局部范围

Bra*_*cil 2 google-chrome-devtools backbone.js

我正在 Chrome javascript 控制台中使用主干日历应用程序(它可以让您在日历上发布事件),并注意到右侧(见图)它有一个面板显示本地、关闭和全局范围。在这个特定的应用程序中,我在 EventsView 中设置了调试器,Chrome 告诉我 Event(一个模型)和 EventView(一个特定事件的视图)位于 Closure 范围内。

我有点理解全局、封闭和局部。全局范围可以是全局命名空间中的任何内容。Local是当前作用域内的所有变量。您能否用实际的术语解释一下 Event 和 EventView 处于闭包范围内意味着什么,以及这如何提高我对应用程序工作方式的理解......这可以为我提供什么见解?另外,您会注意到,在本地范围内,“this”被称为“子项”。为什么?父母会是什么?

在此输入图像描述

glo*_*tho 5

请阅读此处有关闭包的内容:JavaScript 闭包如何工作?

但简短的回答是,假设您在下面第 6 行的断点处暂停,变量“global”将出现在调试工具的“全局变量”部分中,“closure”将出现在“Closure”部分中,“local”将出现在“Local”部分中:

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 }
Run Code Online (Sandbox Code Playgroud)

调试时,了解需要查找多少个闭包才能找到变量定义、它可能适用于多少其他上下文、在本地范围内更改它的后果等都是有帮助的。