在ES6中,每个块都与一个LexicalEnvironment相关联,以支持该语言版本的块作用域特性。
这是否意味着在ES6中为每个块实例化了一个新的ExecutionContext?
参考资料:http://globaldev.co.uk/2013/09/es6-part-2/
例如(我在这里故意使用函数范围的var ):
function foo() {
{
var foo; // Has a new ExecutionContext been instantiated here?
}
}规范的相关位:https://people.mozilla.org/~jorendorff/es6-draft.html#sec-block-runtime-semantics-evaluation
发布于 2015-04-20 13:43:12
不,每个函数只有一个执行环境。LexicalEnvironment只是暂时替换当前的LexicalEnvironment。
发布于 2015-04-20 13:43:36
这是否意味着在ES6中为每个块实例化了一个新的ExecutionContext?
不,我不相信是这样的。
根据我对规范的读取,在执行块的过程中,当前ExecutionContext的ExecutionContext暂时被为块实例化的LexicalEnvironment所取代。在控件离开块之前还原LexicalEnvironment。
https://stackoverflow.com/questions/29749503
复制相似问题