Para describir el alojamiento en javascript en una oración, las variables y las funciones se colocan en la parte superior del alcance en el que se declaran.
Supongo que es un principiante, para comprender el izado correctamente al principio, hemos entendido la diferencia entre undefined y ReferenceError
var v;
console.log(v);
console.log(abc);
ahora en el código de abajo lo que vemos? una variable y una expresión de función se descuenta.
<script>
var totalAmo = 8;
var getSum = function(a, b){
return a+b;
}
</script>
pero la imagen real con prueba de que tanto la variable como la función están en la parte superior de su alcance:
console.log(totalAmo);
console.log(getSum(8,9));
var totalAmo = 8;
var getSum = function(a, b){
return a+b;
}
console.log(totalAmo);
console.log(getSum(9,7));
La salida de los dos primeros registros no está definida y TypeError: getSum no es una función porque tanto var totalAmo como getSum se colocan en la parte superior de su alcance como abajo
<script>
var totalAmo;
var getSum;
console.log(totalAmo);
console.log(getSum(8,9));
var totalAmo = 8;
var getSum = function(a, b){
return a+b;
}
console.log(totalAmo);
console.log(getSum(9,7));
</script>
Pero para la declaración de funciones, funciones completas se alzan en la parte superior de su alcance.
console.log(getId());
function getId(){
return 739373;
}
Ahora la misma lógica se aplica a esas variables, experesiones de funciones y declaratoins de funciones declarados dentro del alcance funcional. Punto clave: no se izarán en la parte superior del archivo ;
function functionScope(){
var totalAmo;
var getSum;
console.log(totalAmo);
console.log(getSum(8,9));
var totalAmo = 8;
var getSum = function(a, b){
return a+b;
}
}
Entonces, cuando usa la palabra clave var , variable y función en la parte superior de su alcance (alcance global y alcance de función). ¿Qué pasa con let y const? , const y let todavía son conscientes del alcance global y el alcance de la función al igual que var, pero las variables const y let también son conscientes de otro alcance llamado alcance bloqueado? un alcance de bloque está presente siempre que hay un bloque de código, como el bucle for, la declaración if else, el bucle while, etc.
Cuando usamos const y let para declarar una variable en el alcance de estos bloques, la declaración de la variable solo se elevará en la parte superior del bloque en el que se encuentra, y no se elevará en la parte superior de la función padre o en la parte superior de la alcance global que se iza.
function getTotal(){
let total=0;
for(var i = 0; i<10; i++){
let valueToAdd = i;
var multiplier = 2;
total += valueToAdd*multiplier;
}
return total;
}
Las variables en el ejemplo anterior se elevarán como abajo
function getTotal(){
let total;
var multiplier;
total = 0;
for(var i = 0; i<10; i++){
let valueToAdd;
valueToAdd = i;
multiplier = 2;
total += valueToAdd*multiplier;
}
return total;
}