ECMAScript中的“ ECMAScript执行上下文集”和“执行上下文堆栈”之间有什么区别

时间:2020-05-27 01:44:18

标签: ecmascript-6 ecmascript-7 ecmascript-next

在ecma262中,我们可以找到下一部分:

代理包含一组ECMAScript执行上下文,一个 执行上下文堆栈,正在运行的执行上下文,代理记录, 和一个执行线程。除了执行线程, 代理的组成部分完全属于该代理。

set of ECMAScript execution contexts是什么? set of ECMAScript execution contextsexecution context stack有什么区别?

1 个答案:

答案 0 :(得分:1)

什么是ECMAScript执行上下文集?

这实际上意味着“存在的所有执行上下文”。

ECMAScript执行上下文集和执行上下文堆栈之间有什么区别?

该堆栈明确是在执行代码时创建的执行上下文堆栈。在整个规范中,随着函数的进入和退出,执行上下文栈中的条目会在其中推入和弹出。

作为体现这种差异的一个示例,异步函数最初运行时将为异步函数创建一个新的执行上下文,然后在该函数返回或等待某些东西时将其从堆栈中弹出。弹出后,它不再是堆栈的一部分,并且异步功能已挂起,但只要该功能正在等待其他内容,该异步功能仍将存在,因此可以稍后将其推回堆栈,因此仍将成为一部分“ ECMAScript执行上下文集”。