Comportamiento de la consola JavaScript de Chrome: la evaluación de objetos lazily
El comportamiento de la consola JavaScript Chrome cuando se ha observado los objetos de evaluación como potencialmente inesperados. Para ilustrar esto, considere el siguiente código:
var s = ["hi"]; console.log(s); s[0] = "bye"; console.log(s);
en Firefox, la consola sale:
[ "hi" ] [ "bye" ]
Sin embargo, en Chrome versión 7.0.517.41 beta, la salida es:
[ "bye" ] [ "bye" ]
Comportamiento de evaluación inesperado
Este comportamiento sugiere que la consola de Chrome puede ser "perezosa" al evaluar los objetos. Cuando se ejecuta la primera declaración de console.log, la consola hace referencia al objeto en la memoria. Cualquier modificación posterior al objeto, como cambiar el primer elemento de "Hi" a "Bye", no se refleja en la salida de la Declaración de primera consola.log. Esto implica que la consola solo evalúa el objeto en el momento de la primera instrucción console.log y almacena la instantánea.
bug Explation
Este comportamiento está documentado en el siguiente informe webkit: https://bugs.webkit.org/show_bug.cggi? fijado). El error establece que la consola de Chrome no realiza una evaluación perezosa para los objetos a los que se accede directamente, lo que resulta en el comportamiento observado.
spoellound
para evitar este comportamiento inesperado, uno puede llamar tostring en el objeto antes de pasarlo a console.log. Esto obliga a Chrome a crear una representación del objeto que no se altere por los cambios posteriores, asegurando que la salida de la consola refleje el estado actual del objeto.
var s = ["hi"]; console.log(s.toString()); s[0] = "bye"; console.log(s.toString());
output:
hi bye
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3