JavaScript引擎是否为闭包创建了一个新的词法环境?

时间:2017-10-01 18:25:20

标签: javascript node.js ecmascript-6 v8 ecmascript-5

当我们有一个内部函数来访问在其外部函数的词法环境中定义的变量x1时,JavaScript引擎如何处理将x1保留在内存中?

他们是否将已创建的执行上下文与其外部函数的词法环境保持在一起,或者创建一个新的词法环境并将变量绑定复制到其中,然后将其链接为outer词汇环境,用于词汇环境。内部函数并使用外部函数的词法环境销毁执行上下文。

我们可以将closure视为Lexical Environment吗?

  • 外部函数为func1
  • 内部函数是func2
  • 外部变量x1func1内定义。

在以下代码中:

function func1() {

  var x1 = 1;

  return function func2() {

    var x2 = 2;

    return [x1, x2];

  }

}

func1()();

0 个答案:

没有答案