什么决定了JS中的存储类型?它与原始vs引用类型有什么关系吗?
我来自C ++ / python背景。阅读this question的答案和评论,我遇到了一些互不兼容(甚至内部不一致)的陈述:
Primitive values
是存储在堆栈上的数据。Primitive value
直接存储在变量访问的位置。- 存储在变量位置的
Reference values
是对象,存储在堆中。Reference value
是指向存储对象的内存中的位置的指针。
来自comment:
值是否存储在堆栈或堆中不是由它们在JS中的类型决定的。它取决于存储变量的生命周期(受范围,特别是闭包影响,并取决于引擎的分析能力)。
从最高投票答案:
JavaScript没有堆栈或堆。它是一种动态语言,JavaScript中的所有变量都是动态的。 [...] JavaScript中的所有值(基元和对象)都是从堆中分配的。甚至变量本身也是从堆中分配的。
有人可以澄清或推荐我一个技术上正确的解释吗?如果该方法依赖于实现,我将非常感谢对实现差异的参考。