Heim > Web-Frontend > js-Tutorial > Warum zeigt „console.log()' sofortige Array-Änderungen in JavaScript an?

Warum zeigt „console.log()' sofortige Array-Änderungen in JavaScript an?

Mary-Kate Olsen
Freigeben: 2024-12-13 01:15:10
Original
397 Leute haben es durchsucht

Why Does `console.log()` Show Immediate Array Changes in JavaScript?

console.log() gibt Änderungen in Array-Referenzen sofort wieder

In JavaScript werden Variablen, die primitive Werte wie Zahlen und Zeichenfolgen enthalten, als Wert übergeben , während diejenigen, die Objekte enthalten, als Referenz übergeben werden. Dieser Unterschied wird bei der Bearbeitung von Arrays deutlich.

Betrachten Sie den folgenden Code:

var A = [2, 1];
var C = A;

console.log(C); // [1, 2]
A.sort();
console.log(C); // [1, 2]
Nach dem Login kopieren

In diesem Beispiel wird C eine Referenz auf das Array A zugewiesen. Wenn A sortiert wird, werden die Änderungen vorgenommen wird sofort in C widergespiegelt, noch bevor erneut auf A zugegriffen wird.

Warum passiert das? Im Gegensatz zu primitiven Werten werden Objekte auf dem Heap zugewiesen, was bedeutet, dass sie sich im Arbeitsspeicher des Computers befinden und über eine Referenz darauf zugegriffen wird. Wenn wir C protokollieren, gibt console.log() den Verweis auf das Array aus und keine Kopie seines Inhalts. Daher werden alle nachfolgenden Änderungen am referenzierten Objekt (in diesem Fall das Sortieren des Arrays) auch in der Konsole angezeigt, bevor A erneut verwendet wird.

Um dieses Verhalten zu vermeiden, protokollieren Sie einen Snapshot des Objekts am Wenn console.log() sofort aufgerufen wird, können Sie den folgenden Trick verwenden:

console.log(JSON.parse(JSON.stringify(C)));
Nach dem Login kopieren

Diese Technik erstellt eine tiefe Kopie des Objekts mithilfe der JSON-Serialisierung und -Deserialisierung.

Das obige ist der detaillierte Inhalt vonWarum zeigt „console.log()' sofortige Array-Änderungen in JavaScript an?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage