This article needs an editorial review. How you can help.
Resum
La sentència for crea un bucle que consta de tres expressions opcionals, embolcallades entre paràntesis i separades per punts i comes, seguits d'una sentència o un grup de sentències executades en el bucle.
Sintaxi
for ([inicialització]; [condició]; [expressió final]) sentència
inicialització
- Una expressió (incloent expressions d'assignació) o declaració de variables. Normalment s'usa per inicialitzar una variable al contador. Opcionalment aquesta expressió pot declarar noves variables amb la paraula clau
var
. Aquestes variables no sóc locals pel bucle, és a dir, es troben en el mateix àmbit en que es troba el buclefor
. El resultat d'aquesta expressió es descarta. condició
- Una expressió que s'avalua abans de cada iteració del bucle. Si aquesta expressió s'avalua true, s'executa la
sentència
. Aquesta prova condicional és opcional. Si s'omet, la condició sempre avalua true. Si l'expressió avalua a false, l'execució salta a la primera expressió que es trobi després del constructefor
. Expressió final
- Una expressió per ser avaluada al final de cada iteració del bucle. Això passa abans de la següent avaluació de
condició
. Generalment s'usa per actualitzar o incrementar la variable contador. sentència
- Una sentència que s'executa mentre la condició avalui a true. Per executar múltiples sentències dins el bucle, utilitzeu una sentència block (
{ ... }
) per agrupar aquestes sentències. Per no executar cap sentència dins el bucle, utilitzeu una sentència buida (;
).
Exemples
Exemple: Fer servir for
La següent sentència for
comença declarant la variable i
i l'inicialitza a 0
. Comprova que i
és menor que nou, realitza les dues sentències següents, i incrementa i
per 1 després de cada pas pel bucle.
for (var i = 0; i < 9; i++) { console.log(i); // more statements }
Exemple: Expressions for
opcionals
Les tres expressions en la capçalera del bucle for
són opcionals.
Per exemple, enel bloc d'inicialització no es requereix inicialitzar les variablesblock it is not required to initialize variables:
var i = 0; for (; i < 9; i++) { console.log(i); // more statements }
Com el bloc d'inicialització, el bloc de condició també és opcional. Si s'omet aquesta expressió, s'ha de d'assegurar de trencar el bucle en el cos per evitar crear un bucle infinit.
for (var i = 0;; i++) { console.log(i); if (i > 3) break; // more statements }
També es pot ometre els tres blocs. Un alre cop, assegureu-vos de fer servir la sentència break
per finalitzar el bucle i també modificar (incrementar) una variable, de forma que la condició per la sentència break esdevé certa en algun moment determinat.
var i = 0; for (;;) { if (i > 3) break; console.log(i); i++; }
Exemple: Fer servir for
amb una sentència buida
El cicle for
següent callcula la possició de desplaçament d'un node en la secció [expressió final], i per tant no requereix l'ús d'una sentència
o secció de sentències block
, es fa servir una sentència buida en el seu lloc.
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;"
sentència
, es fica un punt i coma immediatament despres de la declaració del cicle.Especificacions
Especificació | Estat | Comentaris |
---|---|---|
1a edició de ECMAScript. | Estàndard | Definició inicial. |
ECMAScript 5.1 (ECMA-262) The definition of 'for statement' in that specification. |
Standard | |
ECMAScript 6 (ECMA-262) The definition of 'for statement' in that specification. |
Release Candidate |
Compatibilitat amb navegadors
Característica | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Suport bàsic | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
Característica | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Suport bàsic | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |