Javascript ES6中的块和执行环境
在ES6中,每个块都与一个Javascript ES6中的块和执行环境,javascript,ecmascript-6,Javascript,Ecmascript 6,在ES6中,每个块都与一个词典环境相关联,以支持该语言版本的块范围功能 这是否意味着在ES6中,为每个块实例化一个新的ExecutionContext 参考: 例如(我在这里故意使用作用域为var的函数): 规范的相关位:否,每个函数只有一个执行环境: 让oldEnv成为正在运行的执行上下文的词典环境 让blockEnv成为NewDeclarativeEnvironment(oldEnv)。 执行BlockDeclarationInstallation(语句列表,blockEnv) 将正在运行的
词典环境
相关联,以支持该语言版本的块范围功能
这是否意味着在ES6中,为每个块实例化一个新的ExecutionContext
参考:
例如(我在这里故意使用作用域为var
的函数):
规范的相关位:否,每个函数只有一个执行环境:
否,每个函数只有一个执行环境:
否,每个函数只有一个执行环境:
否,每个函数只有一个执行环境:
ExecutionContext
的LexicalEnvironment
被为块实例化的LexicalEnvironment
临时替换。在控件离开块之前,将还原词典环境
这是否意味着在ES6中,会为其实例化一个新的ExecutionContext
每个街区
不,我认为情况并非如此
根据我对规范的阅读,在块执行期间,当前ExecutionContext
的LexicalEnvironment
被为块实例化的LexicalEnvironment
临时替换。在控件离开块之前,将还原词典环境
这是否意味着在ES6中,会为其实例化一个新的ExecutionContext
每个街区
不,我认为情况并非如此
根据我对规范的阅读,在块执行期间,当前ExecutionContext
的LexicalEnvironment
被为块实例化的LexicalEnvironment
临时替换。在控件离开块之前,将还原词典环境
这是否意味着在ES6中,会为其实例化一个新的ExecutionContext
每个街区
不,我认为情况并非如此
根据我对规范的阅读,在块执行期间,当前ExecutionContext
的LexicalEnvironment
被为块实例化的LexicalEnvironment
临时替换。在控件离开块之前,将还原词典环境
function foo() {
{
var foo; // Has a new ExecutionContext been instantiated here?
}
}