在瞭解數據類型之間的區別以前咱們首先要了解計算機的運行機制。javascript
所謂堆棧內存,其實就是在計算機內存中分配出來的一塊空間,用來執行和儲存代碼的java
圖例以下: web
瞭解了瀏覽器的運行機制,接下來咱們在看基本數據類型和引用數據類型之間的關係瀏覽器
值類型因爲結構相對簡單,直接把建立的值存儲到「棧內存」中便可,由此咱們能夠總結一下棧內存的做用;函數
let a = 12;
let b = a;
b = 13;
console.log(a);
複製代碼
結合上面講述的瀏覽器的底層機制簡單分析一下此題:引用數據類型的結構相對複雜(是一個綜合體,包含不少值),因此不能直接存儲在棧內存中,須要ui
- 單獨開闢空間來存儲,這個空間就是「堆內存」,引用數據類型值都存儲在單獨開闢的「堆內存」中!
堆內存只有一個做用:spa
引用數據類型中對象的執行過程:(不包含函數,函數涉及內容較多後續單獨講解)code
例題:cdn
let n = {
name: '芝麻'
};
let m = n;
m.name = '金色';
console.log(n.name);
複製代碼
綜上所述,簡單一句話歸納:對象
- 基本數據類型是按值操做,值存儲在棧內存中;
- 引用數據類型是按照堆內存的地址來操做;