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);
In Firefox gibt die Konsole Folgendes aus:
[ "hi" ] [ "bye" ]
In der Chrome-Version 7.0.517.41 Beta lautet die Ausgabe jedoch:
[ "bye" ] [ "bye" ]
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());
Ausgabe:
hi bye
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!