为JavaScript中的每个函数创建一个新的执行上下文。
运行以下代码时,内存中有多少个执行上下文?请注意,Bar
不会调用该函数。
function Foo () {
function Bar() {}
}
Foo();
另外,何时创建执行上下文?在评估时间或运行时?
函数的运行时调用是导致创建执行上下文的原因。因此,在您的示例中,只有一个函数调用,因此仅涉及一个执行上下文。
函数的静态(编译时)安排很重要,因为这确定了执行上下文的范围和最终内容。然而,对函数的实际调用对于创建上下文至关重要。(一些较旧的语言使用了“激活记录”一词,尽管它可能更适合用于基于堆栈的分配。)
您可能会用规范中有时有些曲折的语言来阅读详细信息,尽管很难为树木认清森林。规范是根据控制权转移而编写的。函数调用是一种非常常见的发生方式,但是事件处理程序的调用也是如此,或者在<script>
浏览器最初加载事件时调用完整的块也是如此。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句