Der bevorzugte Ansatz im Jahr 2016 ist die Variable in der Schleife Kopf zu erklären, mit let
:
for (let i = 0; i < max; i++) { }
^^^
zwischen diesem und anderen Ansätzen wahrscheinlich minimaler Unterschied in der Leistung ist, aber es gibt große Vorteile in Bezug auf dem Robustheit und Klarheit Ihres Codes.
Zuerst mit let
ist i
lokal auf das for
Konstrukt, so kann es nicht „auslaufen“ oder eine anderes i
in einem äußeren Umfang ändern.
Zweitens, und vielleicht noch wichtiger, wird für jede Iteration der Schleife eine neue Version von i
erstellt. In technischer Hinsicht, "erhalten Sie eine neue Bindung für jede Iteration, wenn Sie eine Variable deklarieren lassen" (siehe this excellent article). Dies löst das uralte Problem der Schließungen, die in der For-Schleife mit dem Endwert i
erstellt wurden.Wir können jetzt schreiben Sie einfach
for (let i = 0; i < 10; i++) {
setTimeout(() => alert(i), i * 1000);
}
statt mit etwas plump Behelfslösung wie
for (var i = 0; i < 10; i++) {
(function(i) {
setTimeout(() => alert(i), i * 1000);
}(i));
}
, die das Thema unzähliger Fragen auf SO hier gewesen zu tun, und die viele von Ihnen haben verschwendet viel zu viele Gehirnzyklen lernen.
Es wäre sehr nützlich, in diese Antwort zu schreiben, wie "let" in diesem Kontext funktioniert. –