Bitte warten...

JavaScript: Schleifen

► JavaScript-Referenz: Schleifen for

Schleifen sind Konstrukte, mit denen der in ihnen enthaltene Code so lange wiederholt wird, wie eine Ausführbedingung erfüllt ist. Wird die Schleife so konstruiert, dass diese Bedingung immer erfüllt ist, entsteht eine Endlosschleife, die das Programm einfrieren lässt, weshalb Endlosschleifen zu vermeiden sind.

JavaScript bietet verschiedene Möglichkeiten, Schleifen zu konstruieren. Eine Möglichkeit ist die Zählschleife, die mit der Anweisung for gebildet wird. Dem Schlüsselwort folgen in runden Klammern drei durch Semikolon getrennte Argumente: der Anfangswert der Variable des internen Zählers (hier: i = 1), die Ausführbedingung (hier: i <= 5) und die mathematische Operation, mit der der Zähler geändert wird (hier: i++). Im Beispiel wird von 1 bis 5 hochgezählt, bei 6 ist die Ausführbedingung false, weshalb an dieser Stelle die Schleife beendet wird. Wäre die Ausführbedingung hier beispielsweise i > 0 würde eine Endlosschleife entstehen, da i immer größer als 0 ist. In geschweiften Klammern folgt dann der Codeblock, der in der Schleife ausgeführt werden soll.

Im zweiten Beispiel wird die Ausführbedingung durch eine zusätzliche Bedingung erweitert (hier: loop == true), mit der im Kontext des Programms gesteuert werden kann, ob die Schleife überhaupt ausgeführt werden soll.

Im dritten Beispiel wird die Schleife bereits bei i == 40 durch die Anweisung break beendet, obwohl die Ausführbedingung noch nicht false ist.

Code kopieren
      for (i = 1; i <= 5; i++) {
        console.log(i);
      }

      loop = false;
      
      for (i = 1; loop == true && i <= 5; i++) {
        console.log(i);
      }

      for (i = 10; i <= 50; i += 10) {
        console.log(i);
        if (i == 40) break;  // Schleife abbrechen
      }

► JavaScript-Referenz: for…of for…in

Mit for…of lässt sich über die einzelnen Werte eines Strings oder eines Arrays iterieren.

Mit for…in lässt sich über die Indizes eines Strings oder eines Arrays iterieren.

Code kopieren
      t = "Hallo, Welt!";
      out = [];
      for (c of t) {
        out.push(c);
      }
      console.log(out);  // (12) ["H", "a", "l", "l", "o", ",", " ", "W", "e", "l", "t", "!"]

      // Dies entspräche folgender normaler Zählschleife:
      out = [];
      for (i = 0; i < t.length; i++) {
        out.push(t.charAt(i));
      }
      console.log(out);  // (12) ["H", "a", "l", "l", "o", ",", " ", "W", "e", "l", "t", "!"]
      
      out = [];
      for (c in t) {
        out.push(c);
      }
      console.log(out);  // (12) ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11"]

► JavaScript-Referenz: while do…while continue

Eine andere Methode ist die Konstruktion einer Schleife mit while, die zwar ebenfalls so lange ausgeführt wird, wie die Ausführbedingung true ist, sie ist aber nicht zwangsläufig eine Zählschleife. Falls die Ausführbedingung bereits am Anfang false ist, wird die Schleife gar nicht durchlaufen.

Bei der Konstruktion mit do…while wie im zweiten Beispiel wird die Schleife auf jeden Fall mindestens ein Mal durchlaufen, da die Ausführbedingung erst am Ende eines Durchlaufs geprüft wird.

Mit der Anweisung continue werden alle folgenden Anweisungen des Codeblocks übersprungen und der nächste Schleifendurchlauf wird begonnen. Dies gilt für alle Arten von Schleifen.

Code kopieren
      r = Math.random();
      while (r < .8) {
        console.log(r);
        r = Math.random();  // erzeugt eine Zufallszahl zwischen 0 und 1
      }

      r = Math.random();
      do {
        console.log(r);
        r = Math.random();
      } while (r < .8);

      r = Math.random();
      sum = 0;
      do {
        console.log(r);
        r = Math.random();
        if (r == .5) continue;  // sofort zurück zum Anfang der Schleife
        sum += r;
      } while (r < .8);