Heim >Web-Frontend >js-Tutorial >Warum scheint „console.log()' geänderte Array-Werte vor der Änderung in JavaScript anzuzeigen?
Konsole gibt geänderte Array-Werte vor der Änderung aus
In JavaScript werden Variablen normalerweise als Referenz übergeben, was bedeutet, dass Änderungen an der Variablen danach vorgenommen werden einer anderen Variablen zugewiesen wurde, wird in beiden Variablen widergespiegelt. Dieses Verhalten wird häufig beobachtet, wenn console.log() verwendet wird, um den Wert einer Variablen anzuzeigen.
Betrachten Sie beispielsweise den folgenden Code:
let A = [2, 1]; let C = A; console.log(C); // [1, 2]
In diesem Beispiel Variable C wird eine Referenz auf das in Variable A gespeicherte Array zugewiesen. Wenn console.log(C) ausgeführt wird, gibt es den aktuellen Wert des Arrays aus, der [1, 2] ist. Dieser Wert ist jedoch möglicherweise nicht mehr aktuell, wenn das ursprüngliche Array A später geändert wird.
A.sort(); console.log(C); // [1, 2]
Beim Ausführen der Methode sort() für Array A werden seine Elemente direkt sortiert. Da Array C einen Verweis auf dasselbe Objekt enthält, bleibt die Ausgabe von console.log(C) [1, 2]. Dies liegt daran, dass console.log() den aktuellen Wert des Objekts zum Zeitpunkt der Ausführung anzeigt und keinen statischen Wert.
Um dieses unerwartete Verhalten zu vermeiden und sicherzustellen, dass console.log() genaue Werte ausgibt, müssen Sie kann entweder Folgendes verwenden:
console.log(JSON.parse(JSON.stringify(C)));
Oder, wie MDN vorschlägt:
Object.assign({}, A)
Das obige ist der detaillierte Inhalt vonWarum scheint „console.log()' geänderte Array-Werte vor der Änderung in JavaScript anzuzeigen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!