for(var i=0; i<10; i++) {
setTimeout(function() {
alert(i);
}, 100);
}
for(let i=0; i<10; i++) {
setTimeout(function() {
alert(i);
}, 100);
}
переменная, объявленная через var, видна везде в функции.
Переменная, объявленная через let, видна только в рамках блока
for (var i = 0; i < 10; i++) {
(function (index) {
setTimeout(function () {
alert(index);
}, 100);
}(i));
}