为什么以及何时未执行的闭包可以在 javascript 中捕获外部变量?

我无法弄清楚为什么未执行的闭包可以捕获外部变量。


我确实读过一些关于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将被释放。


我找不到我的观点有什么问题。那么为什么以及何时捕获闭包中的变量?


FFIVE
浏览 180回答 3
3回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript