【发布时间】:2018-10-23 23:15:07
【问题描述】:
我一直试图了解何时在 js 中创建词法环境。据我所知,词法环境是分两个阶段创建的,创建阶段和执行阶段,但看看下一个简单的闭包。
function makeAdder(x) {
return function(y) {
return x + y;
};
}
var add5 = makeAdder(5);
so ,当 makeAdder 返回函数时,它返回一个带有指向 x 的父词法环境的函数,但我不明白的是为什么 add5 已经有一个父词法环境,而返回的内部函数甚至没有还没有执行,所以我可以推断出父词法环境在遇到函数定义(返回函数)时就被附加,这是正确的吗?父词法环境是在代码中声明和到达函数时创建的,而不是在执行时创建的?那么返回的函数的词法环境呢,它的词法环境是在函数 add5 执行时创建的。请原谅我的冗长文本,我只是想澄清一下何时创建父级和本地词汇环境。
提前谢谢各位。
【问题讨论】:
-
我想你问的是这里解释器的实现细节中的一些东西。
标签: javascript closures