Heim > Web-Frontend > js-Tutorial > Warum zeigt „console.log()' nach der Änderung unerwartete Objektwerte an?

Warum zeigt „console.log()' nach der Änderung unerwartete Objektwerte an?

Mary-Kate Olsen
Freigeben: 2024-12-20 17:07:10
Original
768 Leute haben es durchsucht

Why Does `console.log()` Show Unexpected Object Values After Modification?

Das verwirrende Verhalten von Objekten und console.log

Wenn Sie die Funktion console.log() zum Untersuchen von Objekten verwenden, kann es zu seltsamen Ereignissen kommen Ergebnisse. Wenn Sie beispielsweise ein Array von Objekten protokollieren und es dann mit splice() ändern, werden Sie feststellen, dass die Konsole immer noch das ursprüngliche Array anzeigt.

Warum das passiert

Console.log prüft Objekte asynchron. Obwohl die Konsole synchron einen Verweis auf das Objekt abruft, verschiebt sie die Anzeige seiner Eigenschaften, bis Sie es erweitern (dieses Verhalten variiert je nach Browser). Wenn das Objekt vor der Inspektion geändert wird, enthalten die angezeigten Daten daher die aktualisierten Werte.

Identifizieren der Diskrepanz

Chrome bietet einen visuellen Hinweis, um Sie darauf aufmerksam zu machen Verhalten. Ein kleines „i“ erscheint in einem Feld, wenn Sie mit der Maus über das Objekt fahren, und zeigt diese Meldung an: „Der Objektwert links wurde bei der Protokollierung erfasst, der Wert unten wurde gerade ausgewertet.“

Behebung des Problems

Um diese Diskrepanz zu vermeiden, sollten Sie die Protokollierung einzelner Objekteigenschaftswerte in Betracht ziehen:

console.log(obj.foo, obj.bar, obj.baz);
Nach dem Login kopieren

Alternativ können Sie dies tun Konvertieren Sie das Objekt mit JSON.stringify():

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

in einen JSON-String. Ein anderer Ansatz besteht darin, die Prüfbarkeit von Objekten zu bewahren, indem Sie sie mit JSON.parse():

console.log(JSON.parse(JSON.stringify(obj)));
Nach dem Login kopieren
neu kodieren

Beachten Sie jedoch, dass JSON nicht serialisierbare Eigenschaften wie Funktionen und DOM-Elemente entfernt. Verwenden Sie bei komplexen Objekten einen robusten Deep-Copy-Mechanismus, um solche Eigenschaften beizubehalten.

Das obige ist der detaillierte Inhalt vonWarum zeigt „console.log()' nach der Änderung unerwartete Objektwerte 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