outer 和 [[scopes]] 之间有什么关系?

What is the relationship between outer and [[scopes]]?

提问人:江定玺 提问时间:4/5/2023 最后编辑:Bergi江定玺 更新时间:4/6/2023 访问量:44

问:

在执行函数时,会创建一个执行上下文,执行上下文的词法环境中的 outer 属性指向上层执行上下文的词法环境,以获取执行过程中使用的变量。数组是否由 [[Scopes]] 外部链接上的所有词法环境维护?这两者有什么关系?作用域链的确定是与执行上下文相关,还是在创建作用域链时与执行上下文直接关联?

我正在尝试理解“外部”和“[[范围]]”之间的关系。

JavaScript 范围 闭包 google-chrome-devtools v8

评论

0赞 Barmar 4/5/2023
范围是词汇的,我认为执行上下文是动态的。
0赞 Bergi 4/6/2023
您究竟在哪里看到这些术语?屏幕截图可能会有所帮助。听起来这与 devtools UI 的关系比与 V8 引擎的关系更大。

答:

-1赞 spectra.shohan 4/6/2023 #1

词法环境中的“outer”属性是指父执行上下文的词法环境。它用于解析当前词法环境中未定义的变量和函数。

函数对象的 [[Scopes]] 内部属性是函数的作用域链中所有词法环境的列表。它用于为调用函数时创建的每个新执行上下文创建作用域链。该列表不仅包括外部词法环境,还包括嵌套在外部词法环境中的任何词法环境。

总之,词法环境中的“outer”属性是指父执行上下文的词法环境,而函数对象的 [[Scopes]] 内部属性是函数作用域链中所有词法环境的列表。

评论

0赞 Bergi 4/6/2023
"父执行上下文的词法环境。-不。你指的是哪个执行上下文?
0赞 Community 4/11/2023
您的答案可以通过其他支持信息进行改进。请编辑以添加更多详细信息,例如引文或文档,以便其他人可以确认您的答案是正确的。您可以在帮助中心找到有关如何写出好答案的更多信息。