Novato de Javascript aquí. De https://www.freecodecamp.org/news/var-let-and-const-whats-the-difference/ :
Entonces, "const" está claro que se inicializa como el valor que se declaró originalmente.
"var":
a) not declared, initialized as undefined b) declared, initialized accordingly
"dejar":
a) not declared, initialized as ______???______ b) declared, initialized accordingly
¿Qué se inicializa "let" como si no se declarara al principio?
let si se declara y no se inicializa, su valor predeterminado se establece en undefined .
let x; console.log(x); >> undefined
Bueno, la forma más fácil de pensarlo es que solo hay 1 tipo de variable no declarada (en el sentido de nunca declarada , de lo contrario, solo obtienes un ReferrenceError
). Si nunca se declara, el motor de JavaScript no puede elegir convertirlo en var
, let
o const
para satisfacer las necesidades del desarrollador.
Cualquier variable nunca declarada a la que se le asigna un valor se convierte en una variable de alcance global (ref: comentario de Avikalp Gupta)
Las variables let
elevadas se inicializan con un "valor" especial que arroja un ReferenceError
cuando se accede a ellas:
function foo() { console.log(x) // ReferenceError: Cannot access 'x' before initialization let x } foo()
Las declaraciones let y const definen variables cuyo ámbito es el LexicalEnvironment del contexto de ejecución en ejecución. No se puede acceder a las variables... de ninguna manera hasta que se evalúe el LexicalBinding de la variable.