for (let i = 0; i < 5; i++) {
setTimeout(() => console.log(i), 10);
}
Warum hat hier jeder Schleifen-Durchgang seine eigene Kopie von i?
Im Gegensatz zu
for (var i = 0; i < 5; i++) {
setTimeout(() => console.log(i), 10);
}
wo immer dasselbe i benutzt wird?
Ich verstehe ja, dass let block-scoped ist, aber das „let i = 0;“ wird doch nur ein einziges mal ausgeführt, und zwar am Start, BEVOR die Schleifen-Durchgänge ausgeführt werden. Warum benutzen die ganzen Schleifendurchgänge dann nicht dieses eine i, wie es auch beim var der Fall ist? Wie kommt es, dass jede Iteration ihr eigenes i hat? Es wird doch lediglich die Überprüfung der Bedingung am Ende jedes Schleifendurchgangs durchgeführt, nicht die Deklaration?
Wenn ich die for-Schleife zu einer äquivalenten while-Schleife umschreibe teilen sich die Iterationen wie erwartet das selbe i, trotz des lets.
let i = 0;
while (i < 5) {
setTimeout(() => console.log(i), 10);
i++;
}
Um in PHP den Umgang mit Schleifen zu lernen?