【发布时间】:2017-10-16 20:45:47
【问题描述】:
我很好奇 JavaScript 解释器管理块级变量的方式,例如 let 和 const。
假设我有一个循环:
for (let i = 0; i < 100; i++) {
const square = i * i;
}
i 和 square 究竟分配在哪里?
我知道有一个帧堆栈;每个函数调用都会添加一个新的类字典对象,表示函数的词法上下文。当一个函数退出时,我们递减一个堆栈指针。这意味着我们可以运行带有变量的函数,而不会在堆上产生垃圾。
但是我们的块变量在哪里呢?我们是否用另一个项目来增加帧堆栈?它们是否“扁平化”到上下文中,但带有特殊标志或符号以将它们与兄弟块中的变量区分开来?
最后,我一般可以在哪里学习 JavaScript 解释器(如 V8)如何管理内存?
【问题讨论】:
-
"我一般在哪里可以学习如何<...>"可能在任何documentation there's available about V8.
标签: javascript memory v8