我无法弄清楚为什么未执行的闭包可以捕获外部变量。我确实读过一些关于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 capturedf = undefined // line 10// HEAE variable a was been released当引擎执行到第 7 行时,foo execution context上面创建了global execution context,但在第 7 行之后从未执行过闭包,因此从未创建过闭包执行上下文,词法环境也是如此。foo execution context被弹出,变量a将被释放。我找不到我的观点有什么问题。那么为什么以及何时捕获闭包中的变量?
添加回答
举报
0/150
提交
取消