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 answers

Dieser 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?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage