es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Confusión acerca del alzamiento de variables en JavaScript.

Pensé que entendía el concepto de elevación, pero el código de abajo me confundió. ¿Cómo devuelve 1? ¿La función example() de segundo ejemplo se eleva por encima de la primera?

function example() {
  return 9;
}

console.log(example());

function example() {
  return 1;
}

Si una declaración de función se eleva en una fase de compilación y una expresión de función se ejecuta en la fase de ejecución. ¿Cómo es que el código de abajo devuelve 7? ¿Se debe simplemente a que la expresión example se declara primero?

var example = function() {
  return 7;
}

console.log(example());

function example() {
  return 0;
}

¡Gracias de antemano!

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Explicación del hoisting en JavaScript

    El hoisting es un mecanismo de JavaScript en el que las declaraciones de variables y funciones se mueven al principio de su alcance antes de la ejecución del código. El hoisting solo mueve la declaración, no la inicialización. Esto significa que durante la fase de compilación, las funciones y variables se declaran primero, pero se inicializan más tarde durante la fase de ejecución, donde existen en la memoria.

    Ejemplo 1

    En el primer ejemplo, ambas funciones example() son declaraciones de función. Según el mecanismo de hoisting, la segunda declaración de la función example() sobrescribirá la primera durante la fase de compilación. Por lo tanto, cuando se ejecuta la instrucción console.log(example()), llamará a la segunda función example() y devolverá el valor 1.

    Ejemplo 2

    En el segundo ejemplo, la variable example se inicializa con una expresión de función, y la función function example() es una declaración de función. Durante la fase de compilación, la función function example() se hoistea, pero no sobrescribirá la variable example, porque es una expresión, no una declaración. Por lo tanto, cuando se ejecuta la instrucción console.log(example()), llamará a la expresión de función example() y devolverá el valor 7.

    En conclusión, comprender el hoisting en JavaScript es crucial para entender correctamente cómo se ejecuta el código, y es importante diferenciar entre expresiones de función y declaraciones de función al lidiar con el hoisting.

Comments are closed.