Duplicaté possible: strong>
Console JavaScript de Chrome paresseux des tableaux d'évaluation? P >Ouvrez les outils de développeur chromé ouvert et tapez: p>
var a = []; console.log (a); a.push (1); console.log (a); < / Code> p>Vous pouvez vous attendre à ce que cela sortirait quelque chose comme p>
xxx pré> mais il sortira à la place p>
xxx pré> < p> Le comportement est le même pour p>
var a = []; console.log (a); a); A [0] = 1; console.log (a); code> < / p>Quelqu'un peut-il expliquer ce comportement? p>
exécutant chrome sur OS X. Même comportement sur 32 bits Windows 7. P>
EDIT FORT>: le comportement est la même chose, que les déclarations soient sur la même ligne ou non. Je les ai simplement fournis sur une seule ligne pour le rendre facile à tester. P> mettre p>
xxx pré> dans un fichier puis en cours d'exécution donne le même comportement. P>
Edit x 2 strong> Voir: http://jsfiddle.net/9n4a6/ si vous n'avez pas envie de faire un fichier à test. p> blockQquote>
5 Réponses :
Essayez cela à la place:
var a = []; console.log(a.toString()); a.push(1); console.log(a.toString());
Eh bien, `var a = []; console.log (a [0]); a [0] = 1; console.log (a [0]); ' fonctionne comme prévu, donc parfois console.log n'exécute pas toutes les déclarations avant l'impression.
@Arons, en fait, ce qui est attendu, même si l'impression est retardée ... elle envoie la valeur 1 à la console.log (), qui est ce qui est mis en cache alors affiché.
Même comportement ici avec Win7 sur une machine X64. Je suppose que la méthode du journal contient une référence à edit strong> Ce n'est pas un problème chrome / ium seul, j'ai été témoin de la même chose avec Firebug. Comme je l'ai dit console, la journalisation doit être mise en file d'attente à certains égards. P> A code> et files les appels qui se produisent dans une seule ligne. P>
Le même comportement se produit quand ils ne sont pas sur une seule ligne. Je viens de le faire sur une seule ligne pour faciliter la pâte et le test des personnes.
Nope, impossible de confirmer la question lors de l'utilisation de plusieurs déclarations. Fonctionne comme il est censé être. Je devrais ajouter que j'utilise des constructions de chrome.
Ouvrez la console ici: jsfiddle.net/9n4a6
Ouais, il fait cela sur des objets aussi ... et si vous modifiez la valeur plus tard (par exemple, plusieurs secondes plus tard), puis développez l'objet dans la console, la nouvelle valeur sera là. Bizarre, mais peut être utile dans un sens. P>
Si vous voulez la valeur actuelle, dites simplement "console.log (A.Tostring ());" ou similaire. P>
au moins avec des tableaux, vous pouvez cloner le tableau pour chaque appel de journal: pour les objets, je recommande JSON: p>
Qu'est-ce qui est "enregistré" est l'objet "a" ... pas la représentation du texte brut de "A". L'affichage du journal est assez intelligent pour afficher un porte-lieu pour l'objet "A", qui est rempli / peuplé "plus tard" (semble être à la fin de l'invocation de l'événement). Si vous collez une déclaration d'alerte () Vous verrez les valeurs que vous attendez (les valeurs enregistrées obtiennent «rempli»): Cela ressemble à un bogue en chrome pour moi (un peu goofy de devoir mettre une instruction d'alerte pour voir les informations de journalisation correctes). P> (Remarque Cette question montrée en haut d'une recherche Google pour "Console.log chrome montre uniquement les valeurs actuelles" alors je pensais que je 'D Ajouter ma réponse) P> p>
Ce n'est pas un problème chrome-- C'est une question de webkit. Le même bogue se passera dans Safari.
Je suppose que les appels vers console.log (a) code> la file d'attente de l'objet tableau pour l'impression, mais que la conversion de la matrice en chaîne ne se produit qu'après la fin de la ligne.
@CMS: n'a pas vu ça - merci
Vous êtes bienvenu @jamie :)
DUP possible de