1. 程式人生 > >JavaScript兩種數據類型的存儲方式

JavaScript兩種數據類型的存儲方式

但是 javascrip 兩種 簡單 棧內存 array 占用 存儲方式 直接

JavaScript中數據類型的存儲

區別:

兩種類型的區別是:存儲位置不同

基本數據類型

原始數據類型是直接存儲在棧(stack)中的簡單數據段。因為占據空間小、大小固定,屬於被頻繁使用數據,所以放入棧中存儲。

引用數據類型

引用數據類型存儲在堆(heap)中的對象,占據空間大、大小不固定。如果存儲在棧中,將會影響程序運行的性能。

JavaScript中的引用數據類型有:

Array

Object

引用數據類型是保存在堆內存中的,然後再棧內存中保存一個對堆內存中實際對象的引用(棧內存中保存了一個地址)。所以,JavaScript中對引用數據類型的操作都是操作對象的引用而不是實際的對象。 (這種說法不嚴密,當復制保存著對象的某個標量時,操作的是對象的引用。但在為對象添加屬性時,操作的是實際的對象。)

復制變量值

除了保存的方式不同之外,在從一個變量像另一個變量復制基本類型值和引用類型值是時,也存在不同。

基本數據類型

對於基本類型值,如果進行復制,會為新的變量在棧內存中分配一個新值。

引用數據類型

對於對象、數組這樣的引用數據類型,如果進行復制,會為新的變量在棧內存中分配一個新值,但是這個值僅僅是一個地址。也就是說,復制出來的變量和原有的變量具有相同的地址,指向堆內存中的同一個對象。

為什麽基礎數據類型存在棧中,而引用數據類型存在堆中呢?

1.堆比棧空間大,棧比堆運行速度快。
2.堆內存是無序存儲,可以根據引用直接獲取。
3.基礎數據類型比較穩定,而且相對來說占用的內存小。
4.引用數據類型大小是動態的,而且是無限的。

JavaScript兩種數據類型的存儲方式