JAVASCRIPT
VUE
REACT
NODE
ES6
TYPESCRIPT

Js栈内存和堆内存

2017. 05. 28    

JS栈内存和堆内存

在JS中,每一个数据都需要一个内存空间。内存空间又被分为两种,

  • 栈内存(stock)
  • 堆内存(heap)

基本类型

基本类型有Undefined、Null、Boolean、Number 和String。 这些值都有固定的大小,往往都保存在栈内存中,由系统自动分配存储空间,我们通过按值来访问的。

引用类型

引用类型,值大小不固定,栈内存中存放地址指向堆内存中的对象,是按引用访问的。

栈内存中存放的只是该对象的访问地址,在堆内存中为这个值分配空间。 由于这种值的大小不固定,因此不能把它们保存到栈内存中。 但内存地址大小的固定的,因此可以将内存地址保存在栈内存中。 这样,当查询引用类型的变量时, 先从栈中读取内存地址, 然后再通过地址找到堆中的值。 对于这种,我们把它叫做按引用访问。

JavaScript不允许直接访问堆内存中的位置,因此我们不能直接操作对象的堆内存空间。在操作对象时,实际上是在操作对象的引用而不是实际的对象。因此,引用类型的值都是按引用访问的。

I and My friends