objetos y console.log: una rareza desordenada
cuando trabaja con objetos y console.log, puede encontrar un comportamiento peculiar. Desenvuelvamos este misterio analizando este fragmento de código:
foo = [{id: 1},{id: 2},{id: 3},{id: 4}, {id: 5}, ]; console.log('foo1', foo, foo.length); foo.splice(2, 1); console.log('foo2', foo, foo.length);
en Chrome, esto produce la salida inesperada:
foo1 [Object, Object, Object, Object, Object] 5 0: Object 1: Object 2: Object 3: Object length: 4 __proto__: Array[0] 5 (index):23 foo2 [Object, Object, Object, Object] 4 0: Object 1: Object 2: Object 3: Object length: 4 __proto__: Array[0]
El examen asincrónico
la clave para comprender este comportamiento se encuentra en la naturaleza asíncrona del examen de objetos a través de console.log. Mientras que la consola recibe una referencia al objeto sincrónicamente, no muestra sus propiedades hasta que la expande manualmente.
la sorpresa variable de instancia
cuando se expande un objeto después de que se haya modificado, ve los valores actualizados en lugar del estado original. Esto ocurre asincrónicamente, lo que lleva a la salida aparentemente ilógica.
técnicas de depuración
para evitar esta inconsistencia, considere estas técnicas de depuración:
[&]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