在JavaScript循环中,如何在内存中管理块级分配?

时间:2017-05-17 11:47:37

标签: javascript memory v8

我很好奇JavaScript解释器管理letconst等块级变量的方式。

说我有一个循环:

for (let i = 0; i < 100; i++) {
  const square = i * i;
}

分配isquare到底在哪里?

我知道有一个帧堆栈;每个函数调用都会添加一个新的类字典对象,表示函数的词汇上下文。当函数退出时,我们递减堆栈指针。这意味着我们可以使用变量运行函数,而不会在堆上创建垃圾。

但我们的块变量在哪里?我们用另一个项目增加帧堆栈吗?他们是否被夷为平地&#39;在上下文中,但使用特殊的标志或符号将它们与兄弟块中的变量区分开来?

最后,我在哪里可以了解JavaScript解释器(如V8)如何管理内存?

1 个答案:

答案 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内存管理。