Javascript在堆或堆栈上的闭包

Javascript closures on heap or stack?

本文关键字:闭包 堆栈 Javascript      更新时间:2023-09-26

JavaScript(根据标准)在哪里存储闭包:堆还是堆栈?
闭包是否有第三个明确的位置?

最后是运行时的实现细节。参见凤凰链接

在实现方面,对于上下文销毁后存储局部变量,基于堆栈的实现不再适合(因为它与基于堆栈的结构的定义相矛盾)。因此,在这种情况下,父上下文的封闭数据保存在动态内存分配中(在"堆"中,即基于堆的实现),使用垃圾收集器(GC)和引用计数。这样的系统在速度上不如基于堆栈的系统有效。然而,实现可能总是优化它:在解析阶段发现,是否在函数中使用了自由变量,并根据此决定-将数据放在堆栈或"堆"中。