Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

186
Vistas
consola.iniciar sesión en JavaScript

¿Por qué la salida es diferente en estos dos casos?

1.

 var obj1 = Object.create(Object.prototype, {}); obj1.name = "John"; console.log(obj1);

Salida en la consola cromada: ingrese la descripción de la imagen aquí

2.

 var obj1 = Object.create(Object.prototype, {}); console.log(obj1); obj1.name = "John";

Producción:

ingrese la descripción de la imagen aquí

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

¡Chrome muestra dos versiones diferentes de la variable!

¡Esto también me desconcertaba!

La clave es pasar el cursor del mouse sobre este ícono azul que lo explica. ingrese la descripción de la imagen aquí

El mensaje te dice que lo que está impreso ahí (típicamente en cursiva, y antes del icono i azul) es el valor de la variable al momento de imprimir. Por el contrario, cuando hace clic en el icono ▸ , se muestra un nuevo valor a continuación, que puede ser diferente. Puede decir que este es el nuevo valor porque puede tener negrita/coloreado y potencialmente un árbol de más símbolos ▸ .

Solución, si está utilizando console.log para depurar

Para la depuración, desea el valor en el momento de la impresión, de modo que pueda imprimir en varios momentos y ver cómo evoluciona el valor. Por lo tanto, al depurar una variable cuyo valor puede variar en el momento en que haga clic en el icono ">", haga lo siguiente.

En vez de:

 console.log(thing)

Hacer

 console.log(JSON.stringify(thing,null,2))

Esto convierte el elemento en una cadena en el momento de la impresión y no lo actualizará más adelante. (El null y el 2 solo lo ayudan a formatearse bien en la pantalla).

Demostración

Como fragmento en el editor de Stack Overflow, las dos versiones dan esencialmente el mismo resultado.

 let obj1 = {}; obj1.name = "John"; console.log("Simple console log of obj1\n",obj1); console.log("Console log of JSON strinigfied obj1\n",JSON.stringify(obj1,null,2)); let obj2 = {}; console.log("Simple console log of obj2\n",obj2); console.log("Console log of JSON strinigfied obj2\n",JSON.stringify(obj2,null,2)); obj2.name = "John";

Pero en Chrome Console dan salidas diferentes.

Primero, antes de hacer clic en los triángulos.

ingrese la descripción de la imagen aquí

Luego, después de hacer clic en los triángulos, el registro de la consola simple da el mismo resultado para Obj1 y Obj2.

Pero JSON.stringified hace que Obj1 y Obj2 se vean diferentes, lo que probablemente sea lo que queremos si estamos depurando.

ingrese la descripción de la imagen aquí

about 4 years ago · Juan Pablo Isaza Denunciar

0

porque en segundo lugar ha configurado obj1.name después de console.log(),

 var obj1 = Object.create(Object.prototype, {}); console.log(obj1); obj1.name = "John";
about 4 years ago · Juan Pablo Isaza Denunciar

0

obtiene una respuesta diferente porque en el segundo ejemplo, el valor se define después de que ya lo haya registrado.

básicamente es lo mismo que esto:

 var foo = "Hello World!"; console.log(foo);

registraría "¡Hola mundo!" a la consola, pero si hicieras esto

 console.log(foo); var foo = "Hello World!";

no registraría nada ya que aún no está definido.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda