堆或堆栈上的Javascript闭包?

时间:2013-06-06 10:09:12

标签: javascript stack closures heap

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

1 个答案:

答案 0 :(得分:5)

最后,它是运行时的实现细节。 See Phoenix link

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