在 JavaScript:理解奇怪的部分词法环境被解释为代码的范围,而执行上下文是词法环境的集合,它包括超出您编写的代码的内容。
这些术语的描述在功能上仍然存在重叠,并且不清楚执行上下文做什么或如何做。
最佳答案
将执行上下文视为堆栈框架的最佳方式,而词法环境确实是范围。
相应的规范章节(§8.1 Lexical Environments 和 §8.3 Execution Contexts)解释:
- 执行上下文包含代码的当前评估状态、对代码(函数)本身的引用,以及可能对当前词法环境的引用。
执行上下文在堆栈中进行管理。 - 词法环境包含存储变量的环境记录,以及对其父环境(如果有)的引用。
词汇环境构建树结构。
随着执行上下文的每次变化,词法环境也会发生变化。然而,词法环境也可能独立于此发生变化,例如在输入一个 block 时。
关于javascript - 执行上下文和词法环境有什么区别和关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35759544/