Rolf B: Array mit Array verlinkt ?

Beitrag lesen

Hallo effel,

Javascript mir unbekannt

Welche Sprache(n) kennst Du denn? Vielleicht kann man Analogien zur Speicherverwaltung in JavaScript finden.

Grundsätzlich ist in JavaScript alles ein Objekt - und was keins ist (true, false, Zahlen, Strings), wird bei Bedarf als ein solches getarnt.

Wenn Du ein Objekt in einer Variablen speicherst, dann ist dieser Satz schon eine Fehldeutung. Das tust Du nämlich nicht. Objekte singen zwar keine Lieder, sind sonst aber wie Katzen: sie leben auf einer Halde (kein Witz, die verwendete Speicherstruktur nennt sich Heap). Wenn Du [2,4] an ANZ1 zuweist, dann entsteht ein Array-Objekt mit zwei Werten darin auf dem Heap. Es trägt aber ein Halsband und daran hängt eine lange Leine, und die Zuweisung an ANZ1 knotet das andere Ende der Leine bei ANZ1 fest.

Die Zuweisung ANZ2 = ANZ1 erzeugt nun kein neues Kätzchen. Statt dessen bekommt die erste Katze eine zweite Leine ans Halsband, und das andere Ende der zweiten Leine wird bei ANZ2 festgeknotet.

Nun ist wohl klar, was passiert: Wenn Du ANZ2[0] = 99 ausführst, dann läuft der Computer von ANZ2 aus an der Leine entlang und klebt dem gefundenen KaterArray die 99 an die Indexposition 0. Wenn Du danach ANZ1[0] anschauen willst, so läuft der Computer von ANZ1 aus los und landet beim gleichen Array, weil beide Leinen zur gleichen Katze führen.

Und wenn Du am Ende ANZ1=null und ANZ2=null ausführst, dann schneidest Du beide Leinen durch. Das arme Array kann dann nur noch einen Hit über Erinnerungen singen und in den sphärischen Raum aufsteigen, wo es vom bösen Garbage Collector ins Nichts gezaubert wird.

Miau 😿
Rolf

--
sumpsi - posui - obstruxi