2017-02-09 3 views
1

Je rencontre un comportement inhabituel dans Firefox Dev Tools. Après avoir filtré certains éléments d'un objet avec lodash, la console affiche une référence à la version non filtrée précédente de l'objet, mais uniquement dans le volet de droite.Outils de développement Firefox + consoles de débogage Chrome affichage buggy de références d'objets javascript

debug bug

Sur la gauche, il montre 2 éléments, ce qui est le résultat que je m'y attendais. Sur la droite, il montre les 17 éléments originaux non filtrés. Je l'ai déjà ressenti auparavant avec Firebug avant que je ne devienne obligé de passer à Dev Tools avec l'arrêt récent de FB.

Si personne d'autre n'a expérimenté cela, je pourrais essayer de le distiller à un exemple de cas minimal, mais je préférerais juste contourner le problème, si c'est un bug connu. Je penche pour croire que mon objet est effectivement filtré comme indiqué sur la gauche mais c'est un peu énervant.

Mises à jour:

Utilisation Firefox 51 Linux

Chrome est en train de faire la même chose. Il montre array[2] avec 17 éléments:

chrome debugger

+0

Etes-vous sûr de pouvoir enregistrer la version filtrée aux deux endroits? 'filter' ne mutera pas votre tableau, donc le tableau non filtré existe toujours. – SimpleJ

+1

difficile d'aider sans un exemple de travail. Les objets de la console ont un héritage et ne sont pas des instantanés. Essayez la version JSON.stringify et comparez – charlietfl

Répondre

0

Lorsque vous inspectez un tableau sa valeur actuelle est affiché, à savoir la valeur au moment où vous cliquez sur la variable connecté. Cette valeur peut différer de celle enregistrée dans la console. Les DevTools de Chrome affichent une petite icône Info icon shown besides an expanded array variable en plus du tableau expliquant cela en survol.

Chrome DevTools showing expanded array variable and tooltip explaining why the item count differs

Cela signifie, au moment où la variable est connecté, il en effet eu que deux éléments qu'il contient, mais au moment où vous avez cliqué, il était évidemment encore non filtrée.

+0

Merci. Ils devraient changer console.log() à console.confuse() Dernière fois que j'ai vérifié, le but d'un journal était d'enregistrer les événements comme ils se produisent dans la séquence ... shrug: -/ – glyph

+0

C'est évidemment un compromis qu'ils ont fait en matière de performance parce que s'ils conservaient tous les objets enregistrés en mémoire, la consommation de mémoire augmenterait très rapidement. Comme @charlietfl mentionné, en utilisant 'JSON.stringify()' est une solution de contournement facile pour cela. –