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!