是否有任何因素决定执行上下文堆栈中的优先级执行?

时间:2018-05-07 03:09:09

标签: javascript

在本教程中https://hackernoon.com/execution-context-in-javascript-319dd72e8e2c。按照编写代码的顺序,调用functionA()在console.log之前(" GlobalContext")。但是,在执行上下文堆栈中,顺序是相反的。我想知道,全局执行堆栈总是获得更高的优先级并先执行是不是正确的? Execution Context Stack

1 个答案:

答案 0 :(得分:0)

您可能正在翻译右侧的图片。

计算中使用的软件堆栈的通用模型是将堆栈点初始化为称为“堆栈底部”的内存地址。当堆栈帧和堆栈帧项被推入堆栈时,调整堆栈指针以增加堆栈大小(SP从堆栈底部的偏移)。相反,当从堆栈中移除项目时,堆栈大小会减少。

右边的图片简单地显示了堆栈底部位于图片底部的约定。

全局执行上下文位于底部,在函数A'执行上下文从其上方的堆栈中删除之前不会恢复,并且函数A的执行上下文不会恢复,直到从上面删除了函数B的上下文它

执行上下文本身没有“优先级”,它们在调用函数时保持正确的程序执行顺序,并返回调用它们的函数或全局代码。

请注意,最近添加了一些用于异步操作的JavaScript(如'await`运算符)可以在内部删除并保存执行上下文,以便稍后在某种异步事件或操作发生后恢复。

另请注意,在“全局上下文”中执行意味着全局对象和词汇环境就是代码范围链中的所有内容。这是真的 当全局代码在脚本文件中执行时,但对于来自事件循环的调用通常也是如此。