Seltsames Verhalten bei Objekten und Console.log
Der bereitgestellte Code zeigt eine seltsame Ausgabe in der Chrome-Konsole. Warum wird vor und nach dem Zusammenfügen eines Elements ein Array aus fünf Objekten angezeigt, wobei die Länge einen anderen Wert anzeigt?
Erklärung:
Console.log behandelt die Objektprüfung asynchron . Während die Konsole sofort einen Verweis auf das Objekt empfängt, zeigt sie seine Eigenschaften erst an, wenn es erweitert wird. Wenn das Objekt vor der Erweiterung geändert wird, spiegeln die angezeigten Daten die aktualisierten Werte wider.
Verhalten der Chrome-Konsole:
Die Chrome-Konsole zeigt dieses Verhalten mit einem „i“ in a an Wenn Sie mit der Maus darüber fahren, wird die folgende Meldung angezeigt: „Der Objektwert links wurde bei der Protokollierung als Schnappschuss erstellt, der Wert unten wurde gerade ausgewertet.“ jetzt. log(obj.foo, obj.bar, obj.baz);
JSON kodiert das Objekt: console.log(JSON.stringify(obj));JSON neu kodieren: console.log(JSON.parse(JSON.stringify(obj)));
Beachten Sie, dass JSON nicht serialisierbare Eigenschaften wie Funktionen und DOM-Elemente entfernt und bei Zirkelverweisen möglicherweise fehlschlägt. Daher wird empfohlen, für solche Objekte eine intelligente Deep-Copy-Variante zu verwenden.Das obige ist der detaillierte Inhalt vonWarum zeigt mein „console.log' nach dem Spleißen unterschiedliche Array-Längen und Objektwerte an?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!