Quelle est la différence entre la console.dir et console.journal?
En Chrome les console
objet définit deux méthodes qui semblent faire la même chose:
console.log(...)
console.dir(...)
J'ai lu quelque part sur internet que l' dir
prend une copie de l'objet avant l'enregistrement, alors que log
transmet simplement la référence de la console, ce qui signifie que par le temps que vous passez à inspecter l'objet connecté, elle peut avoir changé. Cependant, certains tests préliminaires suggèrent qu'il n'y a pas de différence et qu'ils souffrent tous les deux de potentiellement en montrant des objets dans les différents états que lorsqu'ils ont été enregistrés.
Essayez ceci dans la console Chromée (Ctrl+Maj+J) pour voir ce que je veux dire:
> o = { foo: 1 }
> console.log(o)
> o.foo = 2
Maintenant, développez le [Object]
sous la instruction de journal et notez qu'il montre foo
avec une valeur de 2. La même chose est vraie si vous répétez l'expérience à l'aide de dir
au lieu de log
.
Ma question est, pourquoi ces deux apparemment fonctions identiques existent sur console
?
console.log([1,2])
et console.dir([1,2])
et vous verrez la différence.Dans firebug le contenu d'un objet connecté avec
console.dir
ne change pas, donc cela fait une grande différence.Attention à
console.dir()
: cette fonction n'est non-standard ! Donc, ne pas l'utiliser sur la production 😉Cette question de l'URL indiqué dans le image Mozilla Developer Network - Console.journal (le) - Différence avec la console.dir().
jolie trouvaille! En fait, l'image est à partir de ma réponse ci-dessous, si c'était fait capturé sur mon ordinateur portable. C'est gentil de donner quelque chose en retour à la SOCIÉTÉ. Quelle grande ressource qu'il est.
OriginalL'auteur Drew Noakes | 2012-08-14
Vous devez vous connecter pour publier un commentaire.
Dans Firefox, ces fonctions se comportent tout à fait différemment:
log
imprime seulement untoString
représentation, alors quedir
imprime un arbre navigable.En Chrome,
log
déjà imprime un arbre -- la plupart du temps. Toutefois, google Chrome,log
encore stringifies certaines classes d'objets, même si elles ont des propriétés. Peut-être l'exemple le plus clair d'une différence est une expression régulière:Vous pouvez également voir une nette différence avec les tableaux (par exemple,
console.dir([1,2,3])
) qui sontlog
ged différemment des objets normaux:Les objets DOM présentent également des différences, comme l'a noté sur une autre réponse.
Dans Chrome 45 sur Ubuntu,
console.log
semble être la simplification, "Firefox", version qui ressemble à untoString
plutôt qu'un arbre. Je ne sais pas encore quand ils l'ont changé, mais ils l'ont fait.Dépend si vous avez la console ouverte lorsque vous appelez
console.log
ou de l'ouvrir plus tard. Oui, vraiment. 🙂Vous pouvez également voir une nette différence avec la Fonction. Dans google chrome, il sera de la Fonction d'impression de code source avec
console.log
, mais avecconsole.dir
, vous pouvez voir l'prototype
,arguments
propriétés.Maintenant, il semble que
console.log
etconsole.dir
fait retour la même représentation sur[1,2,3]
dans Firefox.OriginalL'auteur apsillers
Une autre différence dans Chrome existe lors de l'envoi des éléments du DOM de la console.
Avis:
console.log
imprime l'élément HTML-comme un arbreconsole.dir
imprime l'élément dans un JSON-comme un arbrePlus précisément,
console.log
accorde un traitement spécial aux éléments du DOM, alors queconsole.dir
ne le fait pas. C'est souvent utile lorsque vous essayez pour voir la représentation du DOM en JS objet.Il n'y a plus d'informations dans le Console chromée référence de l'API à ce sujet et d'autres fonctions.
en fait c'est l'inverse. Avis de l'URL dans leur capture d'écran? Ils ont copié ma réponse. Mais c'est bien parce que c'est autorisé par la licence sur tant de réponses et j'aime MDN de toute façon.
Il a obtenu , c'est ce que j'ai d'abord été pensée, mais alors pensé pourquoi ils ne copie à partir d'ici. Du sens . De bonnes informations
Il faut se sentir bien, quand mdn copies de votre réponse..
OriginalL'auteur Drew Noakes
Je pense que Firebug t-il différemment de google Chrome dev tools. Il ressemble à Firebug vous donne un stringified version de l'objet alors que
console.dir
vous donne un objet extensible. Les deux de vous donner l'objet extensible dans google Chrome, et je pense que c'est là que la confusion vient peut-être de. Ou c'est juste un bug dans Chrome.En Chrome, les deux font la même chose. L'extension de votre test, j'ai remarqué que Chrome obtient la valeur actuelle de l'objet lorsque vous développez.
Vous pouvez utiliser ce qui suit pour obtenir un stringified version d'un objet si c'est ce que vous voulez voir. Cela va vous montrer ce que l'objet est à la fois cette ligne est appelée, non pas quand vous les développez.
OriginalL'auteur sachleen
Utiliser la console.dir() pour la sortie de navigation capable d'objet, vous pouvez cliquer à travers à la place de la .toString() de la version, comme ceci:
Comment montrer plein d'objet en Chrome de la console?
OriginalL'auteur Scorpion-Prince
À partir du site firebug
http://getfirebug.com/logging/
OriginalL'auteur Dries Marien
Suivantes Felix Klings conseils j'ai essayé dans mon navigateur google chrome.
de la console.dir([1,2]) donne le résultat suivant:
Tableau[2]
0: 1
1: 2
longueur: 2
_proto_: Array[0]
Tout de la console.log([1,2]) donne le résultat suivant:
[1, 2]
Je crois donc que la console.dir() doit être utilisée pour obtenir plus d'informations, comme prototype, etc dans les tableaux et les objets.
OriginalL'auteur Bimal