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

285
Vistas
Javascript nueva diferencia de palabras clave en la salida

¿Por qué obtengo 2 resultados diferentes cuando ejecuto Chrome -> DevTools -> Sources y cuando ejecuto JSFiddle?

El código que ejecuto es el siguiente

 function foo() { this.baz = "baz" console.log(this.bar + " " + baz); } var bar = "bar"; var baz = new foo(); console.log(baz.baz)

Salida en cromo

 undefined [object Object] baz

Salida en JSFiddle

 "undefined undefined" "baz"

Esencialmente, Chrome me dice que baz es un objeto de tipo {baz:"baz"} pero jsFiddle me dice que no está definido.

ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí

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

0

¿Estás seguro de que no ejecutaste el mismo código en Chrome dos veces ?

La primera vez que baz está claramente indefinido, pero si vuelve a pegar el mismo código, tiene el valor que ya definió ( var baz = new foo(); ).

about 4 years ago · Juan Pablo Isaza Denunciar

0

Cuando se ejecuta una página estándar con ese código, el resultado es undefined undefined y luego baz .

Dentro de la función, baz hace referencia a la variable externa denominada baz , que es la instancia que se está creando (pero aún no se ha creado; se creará después de que la función foo devuelva la instancia). Entonces, en ese momento, debería estar undefined .

Pero la consola no es como una página web estándar; guardará los valores anteriores asignados a las variables cuando lo ejecute de nuevo. Debe haber ejecutado el código más de una vez, en cuyo caso, es como hacer

 function foo() { this.baz = "baz" console.log(this.bar + " " + baz); } var bar = "bar"; var baz = new foo(); console.log(baz.baz) // you probably cleared the console manually at this point // before running it again function foo() { this.baz = "baz" console.log(this.bar + " " + baz); } var bar = "bar"; var baz = new foo(); console.log(baz.baz)

entonces el [object Object] que ve es de una instancia de ejecución anterior.

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