Этот код регистрирует 6
, 6 раз:
(function timer() {
for (var i=0; i<=5; i++) {
setTimeout(function clog() {console.log(i)}, i*1000);
}
})();
Но этот код...
(function timer() {
for (let i=0; i<=5; i++) {
setTimeout(function clog() {console.log(i)}, i*1000);
}
})();
... записывает следующий результат:
0
1
2
3
4
5
Почему?
Это потому, что let
привязывает к внутренней области каждый элемент по-разному, а var
хранит последнее значение i
?