Frage:
In einem JavaScript-Codeausschnitt wird ein Array definiert und auf der Konsole gedruckt. Nach der Änderung des Array-Elements wird es erneut gedruckt. Die Firefox-Konsole zeigt beide korrekten Werte an, aber die Chrome-Konsole wertet das Objekt langsam aus und gibt den geänderten Wert für beide Instanzen aus.
Liegt ein Fehler im Code vor oder handelt es sich um ein Verhalten der Chrome-Konsole?
Antwort:
Wie in einem WebKit-Fehlerbericht (jetzt behoben) erwähnt, gibt es ein Problem mit Chrome Auswertung von Objekten in der Konsole.
Erklärungen und Vermeidung:
Dieses Verhalten ist auf die verzögerte Auswertung der Chrome-Konsole für Objekte zurückzuführen. Es wertet sie nur aus, wenn sie auf der Konsole angezeigt werden, was zu einer falschen Ausgabe führt, wenn das Objekt vor der Anzeige geändert wird.
Um dieses Problem zu vermeiden, kann man .toString() für das Objekt aufrufen, wodurch ein Darstellung, die durch spätere Codeänderungen nicht verändert wird. Durch den Aufruf von .toString() vor dem Drucken an die Konsole wird sichergestellt, dass die richtigen Werte angezeigt werden.
Geänderter Code:
var s = ["hi"]; console.log(s.toString()); // Prints "hi" s[0] = "bye"; console.log(s.toString()); // Prints "bye"
Mit diesem modifizierten Ansatz erfolgt die Konsolenausgabe in Chrome ist mit dem in Firefox identisch und zeigt beide korrekten Werte für das Array an.
Das obige ist der detaillierte Inhalt vonWarum zeigt die JavaScript-Konsole von Chrome geänderte Objektwerte anstelle der ursprünglichen Werte an?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!