我无法弄清楚为什么未执行的闭包可以捕获外部变量。
我确实读过一些关于execute context, lexical environment, 的文章memory management,但这些都不能解决我的问题:
function foo() {
var a = 1;
return function() {
console.log(a);
}
}
var f = foo() // line 7
// HERE variable a was been captured
f = undefined // line 10
// HEAE variable a was been released
当引擎执行到第 7 行时,foo execution context上面创建了global execution context,但在第 7 行之后从未执行过闭包,因此从未创建过闭包执行上下文,词法环境也是如此。foo execution context被弹出,变量a将被释放。
我找不到我的观点有什么问题。那么为什么以及何时捕获闭包中的变量?
相关分类