Ich habe Probleme zu verstehen, wie diese for-Schleife in JavaScript endet:Warum beendet "undefined" eine Schleife in JavaScript?
var files = ["A", "B"];
for (var i = 0, f; f = files[i]; i++) {
console.log(f);
}
Sobald er ausgeführt wird, zeigt es A und B auf dem Bildschirm, aber warum Dateien nicht f = [2], um die Schleife zu beenden? Wenn ich f=files[2]
in meiner Konsole laufen lasse, bekomme ich die Antwort "undefined", also was ist der Grund dafür, dass dies die Schleife beenden sollte?
Bonusfrage: Warum nicht die Schleife stattdessen wie folgt schreiben?
for (var i=0; i < files.length; i++) {
f = files[i];
console.log(f);
}
Dies scheint klarer und wartbar zu mir, so ist es aus irgendeinem Grund, dass der erste Teil des Codes über den zweiten verwendet werden würde?
Bonus Antwort: Weil das erste Snippet die ganze Codezeile speichert – Igor
Ich bevorzuge die zweite für die Konsistenz in einem Fall, wo das Array einige gültige Falsy-Wert als 'false',' undefined', 'null' oder' 0 haben könnte '. – Prusse
@Igor Dateien [i] könnte leicht in der zweiten Zeile statt f enthalten sein, so dass die zusätzliche Zeile nicht benötigt wird. das ist genau die Art und Weise, wie die Op es schrieb – rdans