【发布时间】:2020-10-17 06:19:09
【问题描述】:
我只是好奇。 JavaScript 引擎究竟是如何在内部实现 EMCAScript 执行堆栈指令的。
如果您查看下面的代码,ECMAScript 将期望我们创建一个全局执行上下文,其中包含一个包含 fun1、res 和 c 变量的环境记录。 当 fun1 被调用时,我们将创建一个新的函数执行上下文,该上下文将包含一个包含 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";
【问题讨论】:
标签: v8 executioncontext