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

107
Vistas
Elevación de JavaScript: código izado después de la fase de creación de memoria

Estaba leyendo el libro de Kyle Simpson: https://github.com/getify/You-Dont-Know-JS/blob/1st-ed/scope%20%26%20closures/ch4.md#functions-first .

Pero no entiendo completamente esta línea "Observe que var foo era la declaración duplicada (y por lo tanto ignorada), a pesar de que venía antes de la declaración de función foo()..., porque las declaraciones de función se elevan antes que las variables normales".

Digamos que este es el código:

 console.log(foo); // The output is: foo() { return 2; } function foo() { return 1; } function foo() { return 2; } var foo = 3;

Quiero visualizar cuál sería la salida en JS Engine después de la fase de creación de memoria. ¿Será así?

 function foo() { return 2; } console.log(foo);

En caso afirmativo, ¿por qué var foo = 3; fue ignorado? No hay ningún duplicado para var en el fragmento. Si no, ¿alguien puede ayudarme a visualizar cuál sería el resultado en JS Engine después de la fase de creación de memoria?

Gracias

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

0

  • Declaraciones de funciones
    1. Declarar una variable con el mismo nombre que la función (esta es izada)
    2. Asigne la función a esa variable (esta es izada)
  • sentencias var con asignaciones asociadas
    1. Declarar una variable con ese nombre (esta es izada)
    2. Asigne el valor a esa variable (esto no se iza)

var foo = 3 no se ignora.

La declaración de variable ( var foo ) se ignora porque las declaraciones de funciones anteriores ya declararon esa variable. (es decir, porque duplica la declaración de foo ).

foo = 3 no se ignora y asigna 3 a foo … simplemente lo hace después de que se ejecuta la instrucción console.log porque no está alojada.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Creo que el texto se refiere a

 // scope creation var foo; // the name was declared. Thrice. foo = undefined; // from the var foo = function foo() { return 1 }; // from the first declaration foo = function foo() { return 1 }; // from the second iteration // execution console.log(foo); ; ; foo = 3;

donde foo se inicializa con undefined debido a la declaración de var foo , pero luego se sobrescribe con el valor de inicialización de la declaración de function foo que tiene prioridad, independientemente del orden en que aparecieron las declaraciones en el código, las declaraciones de function anulan las declaraciones de var .

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