Warum verhalten sich let- und var-Bindungen bei Verwendung der setTimeout-Funktion unterschiedlich? [Duplikat
Diese Frage hat hier bereits eine Antwort:
Was ist der Unterschied zwischen der Verwendung von "let" und "var", um eine Variable in JavaScript zu deklarieren? 30 answersErläuterung von `let` und Block Scoping mit for-Schleifen 3 answersDieser Code protokolliert6
, 6 mal
(function timer() {
for (var i=0; i<=5; i++) {
setTimeout(function clog() {console.log(i)}, i*1000);
}
})();
Aber dieser Code ...
(function timer() {
for (let i=0; i<=5; i++) {
setTimeout(function clog() {console.log(i)}, i*1000);
}
})();
... protokolliert das folgende Ergebnis:
0
1
2
3
4
5
Warum
Ist es weillet
bindet jeden Gegenstand anders an den inneren Bereich undvar
behält den neuesten Wert voni
?