根据标准,JavaScript 将闭包存储在堆(heap)还是栈(stack)中?
是否存在专门存储闭包的第三个位置?
根据标准,JavaScript 将闭包存储在堆(heap)还是栈(stack)中?
是否存在专门存储闭包的第三个位置?
最终,这是运行时的一种实现细节。请参见Phoenix链接
至于具体的实现方案,在上下文被销毁后存储局部变量的情况下,基于栈的实现不再适用(因为它与基于栈的结构的定义相矛盾)。因此,在这种情况下,父上下文中的封闭数据将保存在动态内存分配中(即“堆”中),并使用垃圾收集器(GC)和引用计数。这些系统速度比基于栈的系统慢。然而,实现可以始终对其进行优化:在解析阶段检查函数中是否使用了自由变量,并根据此决定 - 将数据放置在堆栈中还是“堆”中。