Heim >Web-Frontend >js-Tutorial >Warum scheint „console.log()' geänderte Array-Werte vor der Änderung in JavaScript anzuzeigen?

Warum scheint „console.log()' geänderte Array-Werte vor der Änderung in JavaScript anzuzeigen?

Susan Sarandon
Susan SarandonOriginal
2025-01-05 07:09:39784Durchsuche

Why Does `console.log()` Seem to Show Altered Array Values Before Modification in JavaScript?

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!

Stellungnahme:
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