In Chrome console
definiert das Objekt zwei Methoden, die dasselbe zu tun scheinen:
console.log(...)
console.dir(...)
Ich habe irgendwo online gelesen, dass dir
vor dem Protokollieren eine Kopie des Objekts erstellt wird, während log
nur der Verweis an die Konsole übergeben wird. Dies bedeutet, dass sich das Objekt, das Sie protokolliert haben, möglicherweise geändert hat. Einige vorläufige Tests deuten jedoch darauf hin, dass es keinen Unterschied gibt und dass beide möglicherweise Objekte in anderen Zuständen anzeigen als zu dem Zeitpunkt, als sie protokolliert wurden.
Versuchen Sie dies in der Chrome-Konsole ( Ctrl+ Shift+ J), um zu sehen, was ich meine:
> o = { foo: 1 }
> console.log(o)
> o.foo = 2
Erweitern Sie nun die [Object]
Anweisung unter der Protokollanweisung und stellen Sie fest, dass sie foo
mit dem Wert 2 angezeigt wird. Dasselbe gilt, wenn Sie das Experiment mit dir
anstelle von wiederholen log
.
Meine Frage ist, warum existieren diese beiden scheinbar identischen Funktionen console
?
console.dir
ändert sich der Inhalt eines Objekts, mit dem protokolliert wird, nicht, sodass es einen großen Unterschied macht.
console.dir()
: Diese Funktion ist nicht Standard ! Also nicht für die Produktion verwenden;)
console.log([1,2])
undconsole.dir([1,2])
und Sie werden den Unterschied sehen.