Hallo,
Für einen Anfänger nicht übel.
Für [...] Nennung von Sprachelementen, die ich vielleicht besser hätte benutzen sollen, bin ich dankbar.
Folgendes fällt mir auf:
Dein Code
if (i<0 || i>nBild) {i=0;}
if (i == nBild){i=0;} // Endlosschleife durch Rekursion
soll wohl sicherstellen, dass 1) i immer >= 0 ist und 2) nicht größer wird, als die Anzahl verfügbarer Bilder.
Für 1) würde ich die Zahl ggf. positiv machen und für 2) den Modulo-Operator einsetzen:
if (i<0) i = i * -1; // oder kürzer:
if (i<0) i *= -1; // oder so:
i<0 && (i*=-1);
(D.h. (i *= -1)
wird nur dann ausgeführt, wenn i<0===true
gilt, dafür sorgt der UND-Operator &&
.
i = i%nBild;
Und beides zusammen:
(i=i%nBild) && i<0 && (i*=-1);
Die Zuweisung (i=i%nBild)
evaluiert immer zu i (d.h. zu true
, wenn es nicht 0 wird).
Im Fall von 0 ist das Ergebnis false
, die Zahl also nicht negativ, somit ist die Sache schon erledigt.
Falls ungleich 0 (Ergebnis true
) greift der folgende &&
-Operator und es wird i<0
ausgewertet.
Falls das false
ergibt, sind wir jetzt fertig, sonst greift schließlich noch der letzte &&
-Operator: i*=-1
wird ausgeführt (i wird also positiv gemacht), und gut.
Weiß nicht, ob man es unbedingt so machen *sollte* (manchen erscheint das zu kryptisch), aber mir gefällt sowas, ganz nach dem Motto "in der Kürze liegt die Würze".
javascript ist ja eine Programmier*sprache*, und letzteres sieht mir mehr nach flüssiger Umgangssprache aus, während viele if und else etc. auf mich eher wie gestammelte Fremdsprache wirken :-)
Gruß, Don P