Comportement de la console JavaScript de Chrome: évaluation des objets paresseusement
Le comportement de la console JavaScript chromée lors de l'évaluation des objets a été observé comme potentiellement inattendu. Pour illustrer cela, considérez le code suivant:
var s = ["hi"]; console.log(s); s[0] = "bye"; console.log(s);
dans Firefox, les sorties de la console:
[ "hi" ] [ "bye" ]
Cependant, dans Chrome version 7.0.517.41 Beta, la sortie est:
[ "bye" ] [ "bye" ]
Comportement d'évaluation inattendu
Ce comportement suggère que la console de Chrome peut être "paresseuse" lors de l'évaluation des objets. Lorsque l'instruction Console.log Console.log est exécutée, la console fait référence à l'objet en mémoire. Toutes les modifications ultérieures de l'objet, telles que la modification du premier élément de "Hi" à "Bye", ne se reflètent pas dans la sortie de l'instruction First Console.log. Cela implique que la console évalue uniquement l'objet au moment de l'instruction First Console.log et stocke l'instantané. fixé). Le bogue indique que la console de Chrome n'effectue pas d'évaluation paresseuse pour les objets accessibles directement, entraînant le comportement observé.
solution de contournement
pour éviter ce comportement inattendu, on peut appeler ToString sur l'objet avant de le passer à Console.log. Cela oblige Chrome à créer une représentation de l'objet qui n'est pas modifié par les changements ultérieurs, garantissant que la sortie de la console reflète l'état actuel de l'objet.
var s = ["hi"]; console.log (s.toString ()); s [0] = "bye"; console.log (s.toString ()); output:
salut au revoir
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3