Estaba leyendo sobre cierres en JavaScript cuando me encontré con este problema:
for (var i = 0; i < 3; i++) { setTimeout(function () { console.log(i); }, 1000); // 1 second delay }Mi salida esperada es:
*loop finishes 0 1 2¿Por qué es?
*loop finishes 3 3 3 No entiendo cómo cambiar var para let soluciona el problema, ya que ambos están definidos en el bucle for, por lo que su alcance debería ser el mismo.