In Bezug auf Referenztypen ist die Wertzuweisung nur eine Kopie des Heap-Speichers, d. h. mehrere Variablen verweisen auf denselben Heap-Speicher. Aber unter Chrome bin ich beim Testen auf eine solche Situation gestoßen. Ich hoffe, die Experten können mir eine Antwort geben
Im Bild unten
- Ich habe eine Variable a erstellt und ihr ein leeres Objekt zugewiesen
- Weisen Sie Variable a der Variable b zu
- aFügen Sie einen Attributnamen hinzu
- ein Abmelden
Gemäß der Verwendung von Referenztypen sollte das Objekt beim Abbrechen von a nicht mehr existieren, aber b hat immer noch diese Referenz. Meine Frage lautet: Sollte das von b ausgegebene Ergebnis nicht null sein, oder?
举个例子:
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,没毛病