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]
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)));
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!