在本教程中https://hackernoon.com/execution-context-in-javascript-319dd72e8e2c。按照编写代码的顺序,调用functionA()在console.log之前(" GlobalContext")。但是,在执行上下文堆栈中,顺序是相反的。我想知道,全局执行堆栈总是获得更高的优先级并先执行是不是正确的?
答案 0 :(得分:0)
您可能正在翻译右侧的图片。
计算中使用的软件堆栈的通用模型是将堆栈点初始化为称为“堆栈底部”的内存地址。当堆栈帧和堆栈帧项被推入堆栈时,调整堆栈指针以增加堆栈大小(SP从堆栈底部的偏移)。相反,当从堆栈中移除项目时,堆栈大小会减少。
右边的图片简单地显示了堆栈底部位于图片底部的约定。
全局执行上下文位于底部,在函数A'执行上下文从其上方的堆栈中删除之前不会恢复,并且函数A的执行上下文不会恢复,直到从上面删除了函数B的上下文它
执行上下文本身没有“优先级”,它们在调用函数时保持正确的程序执行顺序,并返回调用它们的函数或全局代码。
请注意,最近添加了一些用于异步操作的JavaScript(如'await`运算符)可以在内部删除并保存执行上下文,以便稍后在某种异步事件或操作发生后恢复。
另请注意,在“全局上下文”中执行意味着全局对象和词汇环境就是代码范围链中的所有内容。这是真的 当全局代码在脚本文件中执行时,但对于来自事件循环的调用通常也是如此。