Soy un principiante de JS. Estoy tratando de entender por qué llamar a fn() produce "indefinido" cuando uso var para declarar letVar y da un ReferenceError cuando uso let para declarar letVar .
Usando var :
var letVar = "Outer"; function fn() { console.log(letVar); // undefined var letVar = "Inner"; } fn(); Usando let :
let letVar = "Outer"; function fn() { console.log(letVar); // ReferenceError let letVar = "Inner"; } fn(); Según tengo entendido, el uso de var inicializa letVar con un valor undefined cuando se compila el programa. Sin embargo, cuando se ejecuta el programa, ¿no se le asignaría a letVar el valor "Outer" , lo que significa que fn() debería producir "Outer" ?
Además, en el código que usa let , no debería console.log(letVar); tener acceso a letVar = "Outer" porque let letVar = "Outer"; Qué es una declaración y asignación global? Por lo tanto, ¿no debería llamar a fn() también producir "Outer" ?
Gracias de antemano :)