--- title: for slug: Web/JavaScript/Referencia/Sentencies/for translation_of: Web/JavaScript/Reference/Statements/for ---
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.
for ([inicialització]; [condició]; [expressió final]) sentència
inicialitzacióvar. Aquestes variables no sóc locals pel bucle, és a dir, es troben en el mateix àmbit en que es troba el bucle for. El resultat d'aquesta expressió es descarta.condició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 constructe for.Expressió finalcondició. Generalment s'usa per actualitzar o incrementar la variable contador.sentència{ ... }) per agrupar aquestes sentències. Per no executar cap sentència dins el bucle, utilitzeu una sentència buida (;).forLa 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
}
for opcionalsLes 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++;
}
for amb una sentència buidaEl 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.| Especificació | Estat | Comentaris |
|---|---|---|
| 1a edició de ECMAScript. | Estàndard | Definició inicial. |
| {{SpecName('ES5.1', '#sec-12.6.3', 'for statement')}} | {{Spec2('ES5.1')}} | |
| {{SpecName('ES6', '#sec-for-statement', 'for statement')}} | {{Spec2('ES6')}} |
{{ CompatibilityTable() }}
| Característica | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|
| Suport bàsic | {{ CompatVersionUnknown() }} | {{ CompatVersionUnknown() }} | {{ CompatVersionUnknown() }} | {{ CompatVersionUnknown() }} | {{ CompatVersionUnknown() }} |
| Característica | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|---|
| Suport bàsic | {{ CompatVersionUnknown() }} | {{ CompatVersionUnknown() }} | {{ CompatVersionUnknown() }} | {{ CompatVersionUnknown() }} | {{ CompatVersionUnknown() }} | {{ CompatVersionUnknown() }} |
do...whilefor...infor...of