Schleifen in JavaScript

Veröffentlicht am Mittwoch, 10. Dezember 2008, von infinity auf Alphane Moon

Schleifen sind Anweisungen, mit denen ein Programm Aktionen wiederholt ausführen kann. Hier stelle ich die drei grundlegenden Schleifenkonstrukte in JavaScript vor. Wer das alles schon kennt, kann sich an einem Foto eines roten Pandas (Ailurus fulgens) erfreuen.

Kleiner Panda (Ailurus fulgens).

Es gibt in JavaScript die folgenden Schleifenkonstrukte:

Die while-Schleife

Der syntaktische Aufbau einer while-Schleife sieht so aus:

while (Ausdruck)
  Anweisung

Zuerst wird eine Bedingung, der Schleifenausdruck, auf Wahrheit geprüft. Wenn die Bedingung gilt, werden die Anweisungen im Schleifenkörper solange ausgeführt, bis sich dabei etwas ändert, dass die Bedingung falsch wird. Dann wird die Schleife verlassen und die nachfolgenden Anweisungen im Programm werden ausgeführt.

Mit while(true) kann man eine Endlosschleife erzeugen (das will man in der Regel nicht).

Im folgenden Beispiel wird zuerst eine Zählvariable mit Null initialisiert. Solange der Audruck myValue < 5 wahr ist, wird die Schleife durchlaufen: myValue wird um 1 erhöht und der neue Wert wird dann über ein spektakuläres alert-Popup ausgegeben.

var myValue = 0;

while (myValue < 5) {
  myValue++;
  alert(myValue);
}

Click here for instant action!

Die do/while-Schleife

Bei der while-Schleife wird zuerst die Bedingung geprüft wird und dann erst eventuell die Anweisungen aus dem Schleifenkörper ausgeführt. Bei der do/while-Schleife ist das etwas anders: die Anweisungen im Schleifenkörper werden in jedem Fall einmal ausgeführt. Nach diesem ersten Durchlauf wird dann die Schleifenbedingung geprüft. Falls sie gilt, wird die Schleife solange weiter ausgeführt, bis die Bedingung nicht mehr stimmt.

Eine do/while-Schleife hat folgende Syntax:

do
  Anweisung
while (Ausdruck)

Im Beispiel wird wieder eine Zählvariable myValue mit Null initialisiert. Der erste Durchlauf des Schleifenkörpers erhöht den Zähler um 1 und gibt den neuen Wert in einem beeindruckenden alert-Popup aus. Danach wird die Bedingung überprüft und die Schleife gegebenenfalls erneut ausgeführt.

Das Semikolon nach dem while-Teil ist hier wichtig, sonst erzeugt man einen Syntax-Error.

var myValue = 0;

do {
  myValue++;
  alert(myValue);
}  while (myValue < 6);

Click here for fun and giggles!

Die for-Schleife

Bei der for-Schleife gibt es eine Zählervariable (es können auch mehrere sein). Diese Variable wird vor Beginn der Schleife mit einem Startwert initialisiert und als Teil der Schleifenbedingung ausgewertet. Nach dem Durchlaufen der Schleife wird die Zählervariable verändert, zum Beispiel um 1 heraufgesetzt (inkrementiert). Danach wird die Schleifenbedingung wieder geprüft.

Die Syntax einer for-Schleife sieht so aus:

for (Initalisierung ; Test ; Inkrementierung)
  Anweisung

Im Beispiel ist i die Zählervariable. Sie wird mit Null initialisiert. Solange sie kleiner als 8 ist, wird der aktuelle Wert in einem Popup angezeigt und der Zähler dann um 1 heraufgesetzt.

for ( i = 0 ; i < 8 ; i++ ) {
  alert("Zaehler ist jetzt " + i);
}

Click here for awe and wonder!

Dasselbe kann man auch mit einer while-Schleife machen:

var i = 0;

while (i < 8) {
  alert("Zaehler ist jetzt " + i);
  i++;
}

Man kann in einer for-Schleife mehrere Zählervariablen verwenden. Dazu ein kleines Beispiel:

for (i=0 , j=5; i<6 ; i++, j--) {
var produkt = i * j;
alert("i mal j ist jetzt " + produkt);
}

Click here to see the magick of multiplication!

Kommentar

Visit Mr. Mittens.

#1 MrMittens hat geschrieben:

Am 11. Dezember 2008 um 05:00

Die orangene Katze (grillt japanische Spitzmaus in Teriyaki-Sauce in der Mikrowelle) schreibt an die grüne Fee:

Ach liebe grüne Fee ich will dir die Funktionen doch einfach mal erklären:

while: Während ich bis zu fünf Streifenhörnchen verspeise, regt sich mein Magen nicht auf, ab 5 kotze ich sie wieder aus.

do/while: ich esse munter Streifenhörnchen bis ich sie wieder auskotze.

for: bis zu acht Mäuschen.

Die grüne Fee.

#2 Die Grüne Fee hat geschrieben:

Am 11. Dezember 2008 um 21:40

Interessant. Aus der Perspektive einer Katze, die immer nur an Essen denkt, habe ich das noch gar nicht betrachtet. Ich wußte bisher auch nicht, daß Katzen überhaupt programmieren — zumindest nichts anderes als unseren guten alten Freund Syntax Error.

Ist bei deinem Kommentar ein Teil verloren gegangen? Ich glaube, daß in der for-Schleife etwas fehlt. Oder werden die Mäuschen alle gefressen?

Click here for Katzenmampf (powered by while)

Viele Grüße,
die grüne Fee

Visit Mr. Mittens.

#3 MrMittens hat geschrieben:

Am 12. Dezember 2008 um 05:00

for: bis zu acht Mäuschen, 5 Streifenhörnchen, 2 Eichhörnchen, 1.78*106 Moosbewohner kann ich essen bevor ich mich übergeben muss.

Mr. Mittens

Im Moos wohnen die kleinen Moosbewohner.

#4 Moosbewohner hat geschrieben:

Am 12. Dezember 2008 um 16:45

Ähem, dürfen wir da auch ein Wörtchen mitsprechen?

Visit Mr. Mittens.

#5 MrMittens hat geschrieben:

Am 12. Dezember 2008 um 20:30

Die orangene Katze (rupft gerade einem protestierendem Huhn die Federn aus) schreibt an die Moosbewohner:

Liebe Moosbewohner,
ihr seid doch die glücklichsten Bewohner des Waldes: Ihr seid meistens unauffindbar und ungenießbar. Im Gegensatz dazu hat die grüne Fee hat mal wieder ein interessantes Bild von einem saftigen Roten Panda hinterlassen. Muß ich mal wieder vegetarisch essen gehen? Rote Pandas schmecken nach Bambus. Wenn man etwas Sojasoße drauf gibt, hat man ein fernöstliches „vegetarisches“ Essen. Wo geht es hier zum nächsten Zoo …

Mr. Mittens

Die grüne Fee.

#6 Die Grüne Fee hat geschrieben:

Am 11. Dezember 2008 um 23:35

> Rote Pandas schmecken nach Bambus.

Der Rote Panda ist vom Aussterben bedroht (endangered), da solltest du dich etwas zurückhalten. Die armen haben es auch ohne gefräßige Katzentiere schwer genug. Das Foto habe ich in München gemacht.

Ailurus fulgens - IUCN Red List

Viele Grüße,
die grüne Fee

Visit Mr. Mittens.

#7 MrMittens hat geschrieben:

Am 13. Dezember 2008 um 00:47

Die orangene Katze (tranchiert und pfeffert gerade ein Rattus norvegicus - Filet) schreibt an die grüne Fee:

Ach Fee,
ist es nicht toll, derjenige zu sein, der das letzte Tier einer Spezies genüßlich verspeist??? Meine seligen Vorfahren aßen Walfleisch auf den Schiffen, bissen in leckere Dodo-Beine und räkelten sich auf Beutelwolf-Fellen. Je seltener desto besser und exklusiver! Die Büchsenöffner-Rasse (noch nicht vom Aussterben bedroht) pulverisiert Nashörner und Tigerpenisse, ißt Trüffel und holzt den Regenwald nieder. Die haben mächtig Spass dabei. Das kann ja nur gut sein!

Und ich, ja genau ich, soll für den Akt des Aussterbens des kleinen Roten Pandas auserwählt worden sein??? Ich fühle mich geehrt! Nur her mit dem rotem Vieh!!!

Mr. Mittens (in freudiger Erwartung!)

all content copyright © 2007-2010 Alphane Moon