Heim  >  Artikel  >  Web-Frontend  >  Gibt Console.log() Objekte und Arrays in Google Chrome korrekt aus?

Gibt Console.log() Objekte und Arrays in Google Chrome korrekt aus?

Barbara Streisand
Barbara StreisandOriginal
2024-10-20 12:30:02434Durchsuche

Does Console.log() Correctly Output Objects and Arrays in Google Chrome?

Inkonsistenz von Console.log() mit Objekten und Arrays in Google Chrome

Console.log(), ein Debugging-Tool in Google Chrome, zeigt ein besonderes Verhalten bei der Verwendung mit Objekten und Arrays. Diese Anomalie tritt auf, wenn:

  1. Ein verschachteltes Array erstellt wird (z. B. [[345,"test"]]).
  2. Das Array wird in der Konsole protokolliert.
  3. Ein innerer Array-Wert wird geändert und console.log() zeigt anschließend den geänderten Wert an, nicht die Werte des Arrays zum Zeitpunkt der Ausführung.
<code class="javascript">var test = [[2345235345,"test"]]
console.log(test);
test[0][0] = 1111111;
// outputs: [[1111111,"test"]]

var testb = {};
testb.test = "test";
console.log(testb);
testb.test = "sdfgsdfg";
// outputs: {"testb":"test"}

var testc = ["test","test2"];
console.log(testc);
testc[0] = "sdxfsdf";
// outputs: ["test","test2"]</code>

Interessant ist dieses Verhalten ist exklusiv für Chrome; Firefox zeigt es nicht an. Wenn der Code im Chrome-Debugger Zeile für Zeile durchlaufen wird, zeigt console.log() außerdem die korrekten Werte an.

Ursprung des Phänomens

Weitere Untersuchungen ergaben, dass es sich um einen bekannten Fehler handelt, der in Webkit behoben, aber noch nicht in Google Chrome integriert wurde. Der Fehler wurde erstmals im März 2010 gemeldet (https://bugs.webkit.org/show_bug.cgi?id=35801) und im August 2012 wurde ein Fix implementiert. Er hat es jedoch noch nicht in Chrome geschafft.

Auswirkungen auf den Konsolenstatus

Das Verhalten von console.log() wird durch den Status des Konsolenfensters beeinflusst. Wenn das Konsolenfenster zum Zeitpunkt des Ladens eines Skripts geöffnet ist, zeigt console.log() den aktuellen Wert von Arrays und Objekten an. Wenn das Konsolenfenster jedoch geschlossen und geöffnet wird, nachdem das Skript geladen wurde, zeigt console.log() geänderte Werte an, auch wenn sie nach der Ausführung von console.log() geändert wurden.

<code class="javascript">var greetings=['hi','bye'];
console.log(greetings);
setTimeout(function(){
    greetings.push('goodbye');
},3000);</code>

Wenn Das obige Skript wird bei bereits geöffnetem Konsolenfenster ausgeführt. console.log() zeigt zwei Elemente an. Wenn das Konsolenfenster nach dem Laden der Seite geschlossen und wieder geöffnet wird, zeigt console.log() drei Elemente an, die den geänderten Status des Arrays widerspiegeln.

Diese Besonderheit deutet auf einen möglichen Fehler in der console.log()-Funktionalität von Google Chrome hin , was in der aktuellen Version von Chrome nicht behoben wird.

Das obige ist der detaillierte Inhalt vonGibt Console.log() Objekte und Arrays in Google Chrome korrekt aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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