En Chrome, el console
objeto define dos métodos que parecen hacer lo mismo:
console.log(...)
console.dir(...)
Leí en algún lugar en línea que dir
toma una copia del objeto antes de registrarlo, mientras que log
solo pasa la referencia a la consola, lo que significa que para cuando inspeccione el objeto que registró, puede haber cambiado. Sin embargo, algunas pruebas preliminares sugieren que no hay diferencia y que ambos sufren la posibilidad de mostrar objetos en diferentes estados que cuando se registraron.
Prueba esto en la consola de Chrome ( Ctrl+ Shift+ J) para ver a qué me refiero:
> o = { foo: 1 }
> console.log(o)
> o.foo = 2
Ahora, expanda [Object]
debajo de la declaración de registro y observe que se muestra foo
con un valor de 2. Lo mismo es cierto si repite el experimento usando en dir
lugar de log
.
Mi pregunta es, ¿por qué existen estas dos funciones aparentemente idénticas console
?
console.dir
no cambia, por lo que hace una gran diferencia.
console.log([1,2])
yconsole.dir([1,2])
verás la diferencia.