關於引用型,值的賦值只是堆記憶體的複製,就是多個變數指向同一個堆記憶體。但在chrome下,我測試的時候,遇到那麼一個狀況,希望大神們可以給我一個解答
在下圖
我建了一個變數a,賦值了一個空物件給它
變數a賦值給變數b
a追加一個屬性name
a註銷
##根據引用類型的使用,在a被註銷的時候,物件應該被不存在了,但b依舊存在著這個引用。我的疑問就是這個,b輸出的結果不應該是null也對嗎?
舉個例子:a = {}; 假如{} 在內存裡的名字為0x2334c;b = a; 實際執行的是b = 0x2334c;a = null; 執行的是給a標記,等待銷毀; 但b 還在引用0x2334c ,所以0x2334c被沒有被銷毀;除非b和a = null;
a,b都指向同一塊位址c,將a=null,只是讓a不再指向c,並不是將c的資料銷毀,然而b還是指向c,沒毛病
舉個例子:
a = {}; 假如{} 在內存裡的名字為0x2334c;
b = a; 實際執行的是b = 0x2334c;
a = null; 執行的是給a標記,等待銷毀;
但b 還在引用0x2334c ,所以0x2334c被沒有被銷毀;
除非b和a = null;
a,b都指向同一塊位址c,將a=null,只是讓a不再指向c,並不是將c的資料銷毀,然而b還是指向c,沒毛病