Estoy aprendiendo Javascript y entré en la parte de elevación/alcance. Tengo algunas preguntas que realmente espero que alguien pueda ayudarme a aclarar y aquí está mi ejemplo:
Por lo tanto, esto funciona normalmente debido a la elevación: la variable firstName está en Global Scope o se puede llamar a la función antes de declarar la función:
function test() { console.log(firstName); } const firstName = 'a'; test();
O
const firstName ='a'; test(); function test (){ console.log(firstName) }
Sin embargo, si cambio el orden de firstName y test(), el código ya no funciona:
function test() { console.log(`${firstName}`) }; test(); const firstName = 'a';
De acuerdo con el levantamiento, pensé que la variable firstName está en Global Scope. Por lo tanto, la función de prueba debería haber podido buscar la variable firstName cuando se ejecuta.
Pero, ¿por qué en el caso anterior no funciona?
¿Hay algún problema con mi comprensión de elevación/alcance?
Las variables declaradas con let y const también se elevan, pero a diferencia de var, las variables no se inicializan con un valor predeterminado de indefinido. Hasta que se ejecute la línea en la que se inicializan, cualquier código que acceda a estas variables arrojará una excepción.