Comportement d'évaluation de la console JavaScript de Chrome pour les objets
Dans l'extrait de code donné :
var s = ["hi"]; console.log(s); s[0] = "bye"; console.log(s);
Consoles Firefox et Chrome afficher des résultats différents. Firefox affiche le tableau mis à jour après la modification, tandis que Chrome affiche la valeur modifiée dans les deux cas.
Cause de la divergence
La console JavaScript de Chrome effectue une évaluation paresseuse des objets. Cela signifie qu'il n'évalue l'objet que lorsque cela est nécessaire, par exemple lorsqu'il doit l'afficher dans la console. Par conséquent, dans ce cas, Chrome n'évalue pas l'objet lors de la première instruction console.log mais attend plutôt que la deuxième instruction console.log soit exécutée. Cela permet à Chrome d'éviter la surcharge liée à l'évaluation prématurée de l'objet.
Éviter la paresse
Pour forcer Chrome à évaluer l'objet immédiatement, on peut utiliser la méthode toString du object, comme ceci :
console.log(s.toString());
En appelant toString, une représentation de l'objet est créée qui ne sera pas modifiée par les instructions ultérieures. Lorsque Chrome évalue l'instruction console.log, elle aura la valeur mise à jour de l'objet disponible, donc aucune évaluation paresseuse n'aura lieu.
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!