Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

193
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda