Estoy aprendiendo JavaScript Function Hoisting , que dice "la declaración de funciones se mueve a la parte superior de su alcance". Luego leí la definición de "alcance" de este documento , dice "Una función sirve como un cierre en JavaScript y, por lo tanto, crea un alcance". Entonces, ¿significa que cualquier función declarada dentro de una función se mueve a la parte superior de esa función? Utilizo el siguiente ejemplo para probar:
foo(); function foo() { console.log(too); console.log(zoo); { function too() {console.log("too");} } function zoo() {console.log("zoo");} }La salida es
undefined ƒ zoo() {console.log("zoo");} Entonces, obviamente, la declaración de too no se mueve a la parte superior de foo . En realidad, se mueve a la parte superior de la instrucción de bloque dentro de foo . Entonces, ¿cuál es la definición exacta de "alcance" cuando hablamos de elevación de funciones en JavaScript?