javascript引用數據類型和堆內存

整理引用數據類型和堆內存的內容:

基本類型值:指的是保存在棧內存中的簡單數據段;

引用類型值:指的是那些保存在堆內存中的對象,意思是,變量中保存的實際上只是一個指針,這個指針指向內存堆中實際的值。

兩種類型值訪問方式的區別:

基本類型值:按值訪問,操作的是他們實際保存的值;

引用類型值:按引用訪問,當查詢時,我們需要先從棧中讀取內存地址,然後再順藤摸瓜地找到保存在堆內存中的值;


基本類型變量的複製:

 從一個變量向一個變量複製時,會在棧中創建一個新值,然後把值複製到爲新變量分配的位置上,改變源數據不會影響到新的變量(互不干涉);

 (棧內存中申請一塊新的區域做爲新變量,再把舊變量的值賦值到新變量的區域)

var a = 0;

var b = a;

實際在棧內存中,存在 兩個變量a和b分別 都等於 0;


引用類型變量的複製:

複製的是存儲在棧中的指針,將指針複製到棧中未新變量分配的空間中,而這個指針副本和原指針執行存儲在堆中的同一個對象,複製操作結束後,兩個變量實際上將引用同一個對象;因此改變其中的一個,將影響另一個;(兩個棧內存中的變量指向同一個堆內存的對象,改變任意其中一個的引用變量的值,既是改變堆內存中的對象內容。)

var a = [1,2,3];

var b = a;

b[1] = 3;

console.log(a[1]);

輸出結果爲 3;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章