Maison > interface Web > js tutoriel > Pourquoi `console.log()` affiche-t-il des valeurs d'objet inattendues après une modification ?

Pourquoi `console.log()` affiche-t-il des valeurs d'objet inattendues après une modification ?

Mary-Kate Olsen
Libérer: 2024-12-20 17:07:10
original
797 Les gens l'ont consulté

Why Does `console.log()` Show Unexpected Object Values After Modification?

Le comportement déroutant des objets et console.log

Lorsque vous utilisez la fonction console.log() pour examiner des objets, vous pouvez rencontrer des problèmes particuliers résultats. Par exemple, si vous enregistrez un tableau d'objets puis le modifiez à l'aide de splice(), vous remarquerez que la console affiche toujours le tableau d'origine.

Pourquoi cela se produit

Console.log inspecte les objets de manière asynchrone. Bien que la console récupère de manière synchrone une référence à l'objet, elle diffère l'affichage de ses propriétés jusqu'à ce que vous l'ayez développé (ce comportement varie selon les navigateurs). Par conséquent, si l'objet est modifié avant l'inspection, les données affichées contiendront les valeurs mises à jour.

Identification de l'écart

Chrome fournit un repère visuel pour vous en avertir comportement. Un petit "i" apparaît dans une case lorsque vous survolez l'objet, affichant ce message : "La valeur de l'objet à gauche a été capturée lors de la connexion, la valeur ci-dessous a été évaluée tout à l'heure."

Résoudre le problème

Pour éviter cet écart, envisagez de consigner les valeurs des propriétés d'objet individuelles :

console.log(obj.foo, obj.bar, obj.baz);
Copier après la connexion

Vous pouvez également convertir l'objet en une chaîne JSON en utilisant JSON.stringify() :

console.log(JSON.stringify(obj));
Copier après la connexion

Une autre approche consiste à préserver l'inspectabilité des objets en les réencodant avec JSON.parse() :

console.log(JSON.parse(JSON.stringify(obj)));
Copier après la connexion

Cependant, notez que JSON supprime les propriétés non sérialisables telles que les fonctions et les éléments DOM. Pour les objets complexes, utilisez un mécanisme de copie approfondie robuste pour préserver ces propriétés.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal