当我们有一个内部函数来访问在其外部函数的词法环境中定义的变量x1
时,JavaScript引擎如何处理将x1
保留在内存中?
他们是否将已创建的执行上下文与其外部函数的词法环境保持在一起,或者创建一个新的词法环境并将变量绑定复制到其中,然后将其链接为outer
词汇环境,用于词汇环境。内部函数并使用外部函数的词法环境销毁执行上下文。
我们可以将closure
视为Lexical Environment
吗?
func1
。func2
。x1
在func1
内定义。在以下代码中:
function func1() {
var x1 = 1;
return function func2() {
var x2 = 2;
return [x1, x2];
}
}
func1()();