我很好奇。JavaScript引擎如何内部实现EMCAScript执行堆栈指令。
如果你看下面的代码,EMCAScript会要求我们创建一个全局执行上下文(Global execution context),其中包含fun1、res和c变量的环境记录(Environmental Record)。 当fun1被调用时,我们将创建一个新的函数执行上下文(Function execution context),它将有一个环境记录(Environmental Record),其中包含a和b变量及其关联值。
在V8团队的这篇博客文章中Blazingly fast parsing, part 2: lazy parsing,清楚地表明他们在内部使用内存堆栈来控制函数调用,除非变量受到闭包的影响。
我想知道下面代码中的res和c变量是否也会被放在堆栈上? 对于像示例中这样简单的代码,全局和函数执行上下文的环境记录实际上是否会被创建。
任何答案都将不胜感激,充分理解在此情况下答案并不重要,只要使用JS即可。
let fun1 = function(a){
let b = 2;
return a+b;
}
let res = fun1(4);
let c = ”done";