原始/引用类型是存储在堆上还是堆栈上?

时间:2017-07-22 23:15:00

标签: javascript

什么决定了JS中的存储类型?它与原始vs引用类型有什么关系吗?

我来自C ++ / python背景。阅读this question的答案和评论,我遇到了一些互不兼容(甚至内部不一致)的陈述:

来自accepted answer

  
      
  • Primitive values是存储在堆栈上的数据。
  •   
  • Primitive value直接存储在变量访问的位置。
  •   
  • Reference values对象,存储在中。
  •   存储在变量位置的
  • Reference value是指向存储对象的内存中的位置的指针。
  •   

来自comment

  

值是否存储在堆栈或堆中不是由它们在JS中的类型决定的。它取决于存储变量的生命周期(受范围,特别是闭包影响,并取决于引擎的分析能力)。

从最高投票答案:

  

JavaScript没有堆栈或堆。它是一种动态语言,JavaScript中的所有变量都是动态的。 [...] JavaScript中的所有值(基元和对象)都是从堆中分配的。甚至变量本身也是从堆中分配的。

有人可以澄清或推荐我一个技术上正确的解释吗?如果该方法依赖于实现,我将非常感谢对实现差异的参考。

0 个答案:

没有答案