我对 JavaScript 解释器管理块级变量(如let
和 )的方式感到好奇const
。
说我有一个循环:
for (let i = 0; i < 100; i++) {
const square = i * i;
}
究竟在哪里i
和square
被分配?
据我所知,有一个帧堆栈;每个函数调用都会添加一个新的类似字典的对象来表示函数的词法上下文。当函数退出时,我们递减一个堆栈指针。这意味着我们可以运行带有变量的函数而不会在堆上产生垃圾。
但是我们的块变量在哪里?我们是否用另一个项目来扩充框架堆栈?它们是否“扁平化”到上下文中,但使用特殊标志或符号将它们与同级块中的变量区分开来?
最后,我通常在哪里可以学习 JavaScript 解释器(如 V8)如何管理内存?
这里有一些很棒的堆栈溢出答案,可能会对您有所帮助。
JavaScript 类型的内存分配
如何在 Javascript 中 为变量分配内存?
JavaScript 变量是在循环外还是在循环内声明?
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Memory_Management
当然还有V8 的文档。
我希望阅读这些内容可以帮助您更多地了解 javascript 内存管理。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句