Chromes JavaScript-Konsolen-Auswertungsverhalten für Objekte
Im angegebenen Codeausschnitt:
var s = ["hi"]; console.log(s); s[0] = "bye"; console.log(s);
Firefox- und Chrome-Konsolen unterschiedliche Ergebnisse anzeigen. Firefox zeigt das aktualisierte Array nach der Änderung an, während Chrome in beiden Fällen den geänderten Wert anzeigt.
Ursache der Diskrepanz
Die JavaScript-Konsole von Chrome führt eine verzögerte Auswertung für Objekte durch. Dies bedeutet, dass das Objekt nur dann ausgewertet wird, wenn es erforderlich ist, beispielsweise wenn es in der Konsole angezeigt werden muss. Daher wertet Chrome in diesem Fall das Objekt nicht während der ersten console.log-Anweisung aus, sondern wartet, bis die zweite console.log-Anweisung ausgeführt wird. Dadurch kann Chrome den Aufwand einer vorzeitigen Auswertung des Objekts vermeiden.
Faulheit vermeiden
Um Chrome zu zwingen, das Objekt sofort auszuwerten, kann man die toString-Methode von verwenden Objekt, etwa so:
console.log(s.toString());
Durch den Aufruf von toString wird eine Darstellung des Objekts erstellt, die durch nachfolgende Aktionen nicht verändert wird Aussagen. Wenn Chrome die Anweisung console.log auswertet, liegt der aktualisierte Wert des Objekts vor, sodass keine verzögerte Auswertung stattfindet.
Das obige ist der detaillierte Inhalt vonWarum zeigt die JavaScript-Konsole von Chrome ein anderes Objektauswertungsverhalten als Firefox?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!