Beim Debuggen von Code in Google Chrome war es so beobachtete, dass sich console.log() beim Umgang mit verschachtelten Arrays seltsam verhielt. Wenn ein Array protokolliert wurde, führte die Änderung seines inneren Werts nach der Protokollierung dazu, dass die protokollierte Ausgabe den aktualisierten Wert widerspiegelte und nicht den Wert zum Zeitpunkt der Protokollierung. Dieses Verhalten fehlte in Firefox.
Eine weitere Untersuchung ergab, dass die Inkonsistenz auftrat, wenn die Chrome-Konsole während des Ladens geöffnet war. Nachdem die Konsole zunächst geschlossen und nach dem Laden der Seite geöffnet wurde, zeigte console.log() die tatsächlichen Werte des Arrays zum Zeitpunkt der Protokollierung an.
Nach gründlicher Recherche wurde es angezeigt Es wurde festgestellt, dass dieses Verhalten als Fehler in Webkit erkannt wurde. Allerdings wurde im August 2012 ein Fix implementiert, der jedoch noch nicht in Google Chrome veröffentlicht wurde.
Ein Chromium-Entwickler äußerte sich zu dem Fehler und brachte zum Ausdruck, dass das Klonen von Objekten beim Konsolenvorgang zu Problemen führen könnte nicht machbar sein. Darüber hinaus wäre es nicht praktikabel, auf Objekteigenschaftenänderungen zu hören, um genaue Werte beizubehalten.
Die aktuelle Implementierung von console.log() vermeidet das Klonen von Objekten, wenn sie in der Konsole angezeigt werden. Stattdessen werden während der Protokollierung verkürzte Vorschauen generiert, die eine Momentaufnahme der Objekteigenschaften liefern. Dies geschieht nur, wenn die Konsole bereits geöffnet ist, was die Diskrepanz im Verhalten je nach Ausgangszustand der Konsole erklärt.
Dieses inkonsistente Verhalten in console.log() von Google Chrome ist aufgrund der Implementierung der Objektbehandlung innerhalb der Konsole. Das erwartete Verhalten sollte erhalten bleiben, da die Vorschau die Werte des Objekts zum Zeitpunkt der Protokollierung widerspiegelt. Entwickler sollten sich dieses Verhaltens bewusst sein und nach Möglichkeit alternative Debugging-Methoden verwenden.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3