JavaScript數據在內存中儲存方式
阿新 • • 發佈:2019-05-14
tac null string 其中 num light 包括 變量 基本數據類型
詳情來源於個本人博客: https://shengchangwei.github.io/al-data/
> Js的數據類型包括兩種:
基本數據類型:String、Boolean、Number、undefined、null、Symbol 引用數據類型(復雜數據類型):Object
在內存中分為棧區(stack)和堆區(heap),基本數據類型存放在棧區,引用數據類型存放在堆區,
> 基本數據類型:
- 聲明一個變量a的時候,會在棧裏面開辟出一塊新的內存空間,用來存放這個變量a的值
- 當變量 a 儲存的數值發生改變時,棧區裏對應的那塊內存裏存的數據也會發生改變
- 再聲明一個變量b,並把變量a賦值給變量b,此時會在棧內開辟一個新空間用來儲存變量b。
- 這時變量a和變量b對應棧內存中兩個空間,修改其中一個不會影響到另一個。
> 復雜數據類型:
- 聲明一個對象var obj1 = {name: ‘sheng’}, 此時會在堆中開辟一塊空間存放obj1值{name: ‘sheng’}
- 在棧中開辟一個空間存放指向obj1值的指針,obj1通過這個指針可以拿到堆中的值
- 如果將obj1這個對象賦值給obj2時,此時其實賦值給obj2是棧中的指針,
- 那麽obj1和obj2通過相同的指針指向是同一個值,修改其中一個對象的值,會影響到另一個對象。
- 如果對obj1重新賦值的話,那麽這個對象會堆中的另一塊區域,不會在與obj2共享同一塊區域。
JavaScript數據在內存中儲存方式