for(var i = 0; i < 10; i++) { console.log(i); setTimeout(function() { console.log(`The number is ${i}`); }, 1000); }Este bloque de código anterior registra 0-9 correctamente pero luego imprime "El número es 10" diez veces en lugar de imprimir "El número es 0", "El número es 1" y así sucesivamente.
Sin embargo, si cambio la declaración de la variable a 'let'. Entonces se imprime correctamente.
for(let i = 0; i < 10; i++) { console.log(i); setTimeout(function() { console.log(`The number is ${i}`); }, 1000); }Este bloque de código anterior imprime las declaraciones correctamente. Cada declaración se imprime después de un retraso de un segundo como "El número es 0", "El número es 1" y así sucesivamente.
No soy capaz de entender lo que está pasando aquí. ¿Alguien puede desglosarlo por mí?