我很好奇JavaScript解释器管理let
和const
等块级变量的方式。
说我有一个循环:
for (let i = 0; i < 100; i++) {
const square = i * i;
}
分配i
和square
到底在哪里?
我知道有一个帧堆栈;每个函数调用都会添加一个新的类字典对象,表示函数的词汇上下文。当函数退出时,我们递减堆栈指针。这意味着我们可以使用变量运行函数,而不会在堆上创建垃圾。
但我们的块变量在哪里?我们用另一个项目增加帧堆栈吗?他们是否被夷为平地&#39;在上下文中,但使用特殊的标志或符号将它们与兄弟块中的变量区分开来?
最后,我在哪里可以了解JavaScript解释器(如V8)如何管理内存?
答案 0 :(得分:2)
以下是一些很棒的堆栈溢出答案,可能会对您有所帮助
Memory allocation for JavaScript types
How variables are allocated memory in Javascript?
JavaScript variables declare outside or inside loop?
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Memory_Management
当然还有documentation of V8.
我希望阅读这些内容可以帮助您更多地了解javascript内存管理。