Maison >interface Web >js tutoriel >Pourquoi la console JavaScript de Chrome affiche-t-elle les valeurs d'objet modifiées au lieu des valeurs d'origine ?

Pourquoi la console JavaScript de Chrome affiche-t-elle les valeurs d'objet modifiées au lieu des valeurs d'origine ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-24 03:20:18304parcourir

Why Does Chrome's JavaScript Console Show Modified Object Values Instead of Original Values?

Comportement d'évaluation de la console JavaScript de Chrome pour les objets

Question :

Dans un extrait de code JavaScript, un tableau est défini et imprimé sur la console. Après avoir modifié l'élément du tableau, celui-ci est à nouveau imprimé. La console de Firefox affiche les deux valeurs correctes, mais la console de Chrome évalue paresseusement l'objet et imprime la valeur modifiée pour les deux instances.

Y a-t-il une erreur dans le code ou s'agit-il d'un comportement de la console Chrome ?

Réponse :

Comme indiqué dans un rapport de bug de WebKit (maintenant corrigé), il existe un problème concernant l'évaluation de Chrome. d'objets dans la console.

Explications et évitements :

Ce comportement découle de la nature d'évaluation paresseuse de la console Chrome pour les objets. Il les évalue uniquement lorsqu'ils sont affichés sur la console, conduisant à une sortie incorrecte si l'objet est modifié avant l'affichage.

Pour éviter ce problème, on peut appeler .toString() sur l'objet, ce qui crée un représentation qui ne sera pas modifiée par les modifications ultérieures du code. L'appel de .toString() avant l'impression sur la console garantit que les valeurs correctes sont affichées.

Code modifié :

var s = ["hi"];
console.log(s.toString()); // Prints "hi"
s[0] = "bye";
console.log(s.toString()); // Prints "bye"

En utilisant cette approche modifiée, la sortie de la console dans Chrome sera identique à celui de Firefox, affichant les deux valeurs correctes pour le tableau.

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:
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