function sayHi(name){ let result="Hi"+name+a; console.log(result) } let a=1; sayHi("Alex") El resultado del código anterior es Hi Alex1 , por lo que entiendo es que la variable a se eleva, pero en JS, solo se eleva la declaración, no la inicialización, entonces, ¿cómo es que el resultado puede usar el valor de a ?
Porque el valor se establece antes de llamar a la operación. Mira el orden de estas dos cosas:
let a=1; sayHi("Alex") Primero , el valor de a se establece en 1 , luego se invoca la función sayHi . Dentro de esa función se utiliza el valor de a .
Intercambie las dos declaraciones y vea un resultado diferente:
function sayHi(name){ let result="Hi"+name+a; console.log(result) } sayHi("Alex") let a=1;Las funciones no intentan acceder a las variables hasta que son llamadas , lo que sucede después de que se le ha asignado un valor a a variable.
Javascript funciona como una cascada. Esto significa que el código se compilará desde el nivel superior. La variable a se inicializa antes de que se llame a la función sayHi : por lo que tiene acceso a su valor. Compruebe cómo funciona el alcance también aquí https://www.w3schools.com/js/js_scope.asp