JS中數據的存儲方式和位置


1.js數據類型

①原始數據類型:

Undefined,Null,Boolean,Number,String 

②引用數據類型:

對象,數組,函數

2.數據存儲的位置

①原始數據類型:

         棧內存  原始數據類型直接存儲在棧(stack)中的簡單數據段,占據空間小、大小比較穩定,屬於被頻繁使用數據,所以放入棧中存儲;

②引用數據類型:

         堆內存  引用數據類型存儲在堆(heap)中的對象,占據空間大、大小不固定      在棧內存中只是存了一個地址來表示對堆內存中的引用。

                      堆內存是無序存儲,可以根據引用直接獲取。

 

當解釋器尋找引用值時,會首先檢索其在棧中的地址,取得地址后從堆中獲得實體。

所以,JavaScript中對引用數據類型的操作都是操作對象的引用而不是實際的對象。

可以理解為,棧內存中保存了一個地址,這個地址和堆內存中的實際值是相關聯的。

3.關於復制

①引用數據類型

引用(基本)數據類型進行復制時,系統會自動為新的變量在棧內存中分配一個新的內存區域。

②引用數據類型

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

如: var copyObj = obj, obj 和 copyObj  具有相同的地址值,指向堆內存中的同一個實際對象。

當修改 obj 或 copyObj 任意一個值時都會引起實際對象的值被修改。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM