Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

190
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!