运行以下代码时,内存中存在多少个执行上下文?请注意,不会调用功能栏.
function Foo () { function Bar() {} } Foo();
此外,何时创建执行上下文?在评估时或运行时?
函数的静态(编译时)排列很重要,因为它确定了执行上下文的范围和最终内容.然而,实际调用函数对于创建上下文很重要. (一些较旧的语言使用术语“激活记录”,但这可能更适用于基于堆栈的分配.)
你可以用the spec的有时翻天的语言来阅读细节,尽管很难弄清楚森林的树木.规范是根据转移的控制来编写的.函数调用是一种非常常见的方式,但事件处理程序的调用或完整的< script>的调用也是如此.最初由浏览器加载时阻止.