Estoy aprendiendo a levantar en JavaScript y practicando algunos ejemplos.
En un ejemplo, estoy confundido con su salida. Aquí está el código de ejemplo:
var f = function(){ console.log("Expression"); } function f(){ console.log("Declaration"); } f(); La salida de este código es Expression .
Esperaba que el resultado fuera Declaración . Si escribo el código de esta manera:
function f(){ console.log("Declaration"); } var f = function(){ console.log("Expression"); } f(); La salida sigue siendo la misma .
¿Cómo la salida de este código es Expression ?
En JavaScript, las declaraciones de funciones se elevan, las variables no.
Por eso, en su primer ejemplo, la declaración se eleva y luego se anula.
Lo mismo sucede en tu segundo ejemplo.
Durante la inicialización, a la variable 'f' se le asigna la función (Declaración). La inicialización ocurre antes de que se ejecute el código. Cuando se ejecuta el código, a la variable 'f' se le asigna un nuevo valor (Expresión). Es decir, la declaración de la función ocurrirá antes de ejecutar el código, independientemente de en qué parte del código se declare la función.