Heim > Web-Frontend > js-Tutorial > Warum zeigt die JavaScript-Konsole von Chrome beim Auswerten von Objekten unerwartete Ergebnisse an?

Warum zeigt die JavaScript-Konsole von Chrome beim Auswerten von Objekten unerwartete Ergebnisse an?

Mary-Kate Olsen
Freigeben: 2024-12-27 04:59:13
Original
639 Leute haben es durchsucht

Why Does Chrome's JavaScript Console Show Unexpected Results When Evaluating Objects?

Verhalten der JavaScript-Konsole von Chrome: Objekte träge auswerten

Das Verhalten der Chrome-JavaScript-Konsole bei der Auswertung von Objekten wurde als potenziell unerwartet beobachtet. Betrachten Sie zur Veranschaulichung den folgenden Code:

var s = ["hi"];
console.log(s);
s[0] = "bye";
console.log(s);
Nach dem Login kopieren

In Firefox gibt die Konsole Folgendes aus:

[ "hi" ]
[ "bye" ]
Nach dem Login kopieren

In der Chrome-Version 7.0.517.41 Beta lautet die Ausgabe jedoch:

[ "bye" ]
[ "bye" ]
Nach dem Login kopieren

Unerwartete Bewertung Verhalten

Dieses Verhalten deutet darauf hin, dass die Chrome-Konsole bei der Auswertung von Objekten möglicherweise „träge“ ist. Wenn die erste console.log-Anweisung ausgeführt wird, verweist die Konsole auf das Objekt im Speicher. Alle nachfolgenden Änderungen am Objekt, z. B. die Änderung des ersten Elements von „hi“ in „bye“, werden nicht in der Ausgabe der ersten console.log-Anweisung widergespiegelt. Dies bedeutet, dass die Konsole das Objekt nur zum Zeitpunkt der ersten console.log-Anweisung auswertet und den Snapshot speichert.

Fehlererklärung

Dieses Verhalten ist in dokumentiert Folgender Webkit-Fehlerbericht: https://bugs.webkit.org/show_bug.cgi?id=35801 (jetzt behoben). Der Fehler besagt, dass die Chrome-Konsole keine verzögerte Auswertung für Objekte durchführt, auf die direkt zugegriffen wird, was zu dem beobachteten Verhalten führt.

Problemumgehung

Um dieses unerwartete Verhalten zu verhindern, eine kann toString für das Objekt aufrufen, bevor es an console.log übergeben wird. Dadurch wird Chrome gezwungen, eine Darstellung des Objekts zu erstellen, die durch nachfolgende Änderungen nicht verändert wird, wodurch sichergestellt wird, dass die Konsolenausgabe den aktuellen Status des Objekts widerspiegelt.

var s = ["hi"];
console.log(s.toString());
s[0] = "bye";
console.log(s.toString());
Nach dem Login kopieren

Ausgabe:

hi
bye
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWarum zeigt die JavaScript-Konsole von Chrome beim Auswerten von Objekten unerwartete Ergebnisse 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