VAR
En el primer caso donde la variable tiene definido var
el valor de i
es de alcance de función, es decir vive y existe tanto dentro de los paréntesis del for
como dentro del if
por lo cual puede completar el recorrido completo, es decir hacer estas iteraciones
Variable valor
i 0
i 1
i 2
i 3
Por consola nos devuelve esto
"La letra i vale: 0"
"La letra i vale: 1"
"La letra i vale: 2"
"otro valor3"
Fijate como a pesar de que yo puse un texto diferente dentro del if
la continuidad del valor de i
dentro de las iteraciones del for
sigue por que i
tiene un alcance mayor que let por lo cual su valor por cada vuelta no se pierde
LET
Sin embargo cuando la variable es de tipo let
su existencia o alcance se limita a existir dentro del bloque for
, mira este ejemplo
let printNumTwo;
for (let i = 0; i < 3; i++) {
console.log("La letra i vale: "+i)
if(i === 2){
printNumTwo = function() {
return "otro valor"+i;
};
}
}
console.log(printNumTwo());
Fijate los resultados que me arroja en consola
"La letra i vale: 0"
"La letra i vale: 1"
"La letra i vale: 2"
"otro valor2"
Fijate como el valor de i, una vez que las iteraciones del ciclo for
terminan adquiere el valor 2 dentro del condicional if
, el cual por cierto si lo cambias por 0 o 1 dentro de i === 2
es el valor que te va a mostrar