No Chrome, o console
objeto define dois métodos que parecem fazer a mesma coisa:
console.log(...)
console.dir(...)
Li em algum lugar on-line que dir
tira uma cópia do objeto antes de registrá-lo, enquanto log
apenas passa a referência ao console, o que significa que quando você inspeciona o objeto que registrou, ele pode ter sido alterado. No entanto, alguns testes preliminares sugerem que não há diferença e que eles sofrem com a exibição potencial de objetos em estados diferentes do que quando foram registrados.
Tente isso no console do Chrome ( Ctrl+ Shift+ J) para ver o que quero dizer:
> o = { foo: 1 }
> console.log(o)
> o.foo = 2
Agora, expanda a [Object]
instrução abaixo do log e observe que ela é exibida foo
com o valor 2. O mesmo acontece se você repetir a experiência usando em dir
vez de log
.
Minha pergunta é: por que essas duas funções aparentemente idênticas existem console
?
console.dir
não muda, por isso faz uma grande diferença.
console.log([1,2])
econsole.dir([1,2])
você verá a diferença.