JavaScript中的變量分爲基本類型和引用類型基本類型是保存在棧內存中的簡單數據段,它們的值都有固定的大小,保存在棧空間,經過按值訪問this
引用類型是保存在堆內存中的對象,值大小不固定,棧內存中存放的該對象的訪問地址指向堆內存中的對象,JavaScript不容許直接訪問堆內存中的位置,所以操做對象時,實際操做對象的引用spa
let a1 = 0; // 棧內存 let a2 = "this is string" // 棧內存 let a3 = null; // 棧內存 let b = { x: 10 }; // 變量b存在於棧中,{ x: 10 }做爲對象存在於堆中 let c = [1, 2, 3]; // 變量c存在於棧中,[1, 2, 3]做爲對象存在於堆中
當咱們要訪問堆內存中的引用數據類型時3d
let a = 20; let b = a; b = 30; console.log(a); // 20
結合下面圖進行理解:指針
在棧內存中的數據發生複製行爲時,系統會自動爲新的變量分配一個新值,最後這些變量都是相互獨立互不影響的code
let a = { x: 10, y: 20 } let b = a; b.x = 5; console.log(a.x); // 5