for

Die for Anweisung beschreibt eine Schleife mit drei optionalen Ausdrücken und einer oder mehreren Anweisungen.

Syntax

for ([initialization]; [condition]; [final-expression])
   statement
initialization
Ein Ausdruck (inklusive Zuweisungen) oder eine Variablendeklaration. Normalerweise wird ein Schleifenzähler initialisiert. Neu deklarierte Variablen haben denselben Geltungsbereich wie die for Schleife (d.h. sie sind nicht lokal auf die Schleife begrenzt). Die Initialisierung ist optional.
condition
Die Bedingung wird vor jedem Schleifendurchlauf ausgewertet. Ergibt die Auswertung true, dann wird die Answeisung (statement) ausgeführt. Die Bedingung ist optional. Bei fehlender Bedingung gilt immer true. Bei false wird die Schleife verlassen (und bei der nächsten Anweisung, die dem Schleifenende folgt, weitergemacht).
final-expression
Dieser Ausdruck wird nach jedem Schleifendurchlauf ausgewertet. Dies findet vor der nächsten Auswertung der Schleifenbedinung statt. Üblicherweise wird der Schleifenzähler inkrementiert oder dekrementiert.
statement
Der Ausdruck wird ausgeführt solange die Bedingung erfüllt ist (true). Man kann mehrere Anweisungen ausführen, indem man sie in einer block Anweisung  ({ ... }) zusammenfasst. Eine leere Anweisung (empty statement), markiert durch semikolon, kann auch ausgeführt werden.

Beispiele

Verwendung der for Schleife

Die folgende for Anweisung initialisiert die Variable i mit null. Die Bedingung prüft ob i kleiner neun ist, führt den Code in der block Anweisung aus und erhöht i um eins nach jedem Schleifendurchlauf.

for (var i = 0; i < 9; i++) {
   console.log(i);
   // more statements
}

Optionale for Ausdrücke

Alle drei for Ausdrücke sind optional.

Z.B. kann der Initialisierungsblock leer sein:

var i = 0;
for (; i < 9; i++) {
    console.log(i);
    // more statements
}

Die Schleifenbedinung ist auch optional. Man muss jedoch darauf achten, dass in der Schleife eine Austrittsbedingung (break Anweisung) vorkommt, um nicht in eine Endlosschleife zu geraten.

for (var i = 0;; i++) {
   console.log(i);
   if (i > 3) break;
   // more statements
}

Das gleiche gilt selbstverständlich wenn man alle drei Blöcke leer lässt. Hier wird i in der Schleife inkrementiert, um sicherzustellen, dass nach endlich vielen Durchläufen die Schleife abgebrochen wird.

var i = 0;

for (;;) {
  if (i > 3) break;
  console.log(i);
  i++;
}

Verwendung von for Schleife mit leerer Anweisung

Das folgende Beispiel zeigt eine leere Anweisung im Schleifenkörper. Die Berechnungen finden im Ausdruck [final-expression] statt. Die Schleife wird solange durchlaufen bis die Bedingung nicht mehr erfüllt ist.

function showOffsetPos (sId) {
  var nLeft = 0, nTop = 0;

  for (var oItNode = document.getElementById(sId); // initialization
       oItNode; // condition
       nLeft += oItNode.offsetLeft, nTop += oItNode.offsetTop, oItNode = oItNode.offsetParent) // final-expression
       /* empty statement */ ;
  
  console.log("Offset position of \"" + sId + "\" element:\n left: " + nLeft + "px;\n top: " + nTop + "px;");
}

// Example call:

showOffsetPos("content");

// Output:
// "Offset position of "content" element:
// left: 0px;
// top: 153px;"
Beachte: Die leere Anweisung folgt der Schleife und besteht lediglich aus einem Semikolon.

Spezifikationen

Spezifikation Status Bemerkung
ECMAScript 1st Edition (ECMA-262)
Die Definition von 'for statement' in dieser Spezifikation.
Standard Ursprüngliche Definition.
ECMAScript 3rd Edition (ECMA-262)
Die Definition von 'for statement' in dieser Spezifikation.
Standard  
ECMAScript 5.1 (ECMA-262)
Die Definition von 'for statement' in dieser Spezifikation.
Standard  
ECMAScript 2015 (6th Edition, ECMA-262)
Die Definition von 'for statement' in dieser Spezifikation.
Standard  
ECMAScript 2017 Draft (ECMA-262)
Die Definition von 'for statement' in dieser Spezifikation.
Entwurf  

Browserkompatibilität

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Unterstützung (Ja) (Ja) (Ja) (Ja) (Ja)
Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Unterstützung (Ja) (Ja) (Ja) (Ja) (Ja) (Ja)

Siehe auch

Schlagwörter des Dokuments und Mitwirkende

Schlagwörter: 
 Mitwirkende an dieser Seite: schlagi123, Elyasin
 Zuletzt aktualisiert von: schlagi123,