Herhaling

Met lusinstructies kunt u een specifiek codeblok herhaaldelijk uitvoeren met een reeks waarden of variabelen. Adobe geeft de aanbeveling dat u het codeblok altijd tussen accolades ( {} ) plaatst. U kunt de accolades weglaten als het codeblok maar één instructie bevat, maar dit wordt niet aanbevolen (om dezelfde reden als voor voorwaardelijke instructies): de toenemende kans dat later toegevoegde instructies ongewild worden buitengesloten van het codeblok. Als u later een instructie toevoegt die u in het codeblok wilt opnemen maar vergeet accolades te plaatsen, wordt de instructie niet als onderdeel van de lus uitgevoerd.

for

Met de lus for kunt u een variabele doorlopen voor een opgegeven reeks waarden. U moet drie expressies in een instructie for opgeven: een variabele die is ingesteld op een beginwaarde, een voorwaardelijke instructie die bepaalt wanneer de herhalingen eindigen en een expressie die bij elke lus de waarde wijzigt van een variabele. De volgende code wordt bijvoorbeeld vijf keer herhaald: De waarde van de variabele i begint bij 0 en eindigt bij 4. De uitvoer zijn de getallen 0 tot en met 4, die elk in een afzonderlijke regel worden weergegeven.

var i:int; 
for (i = 0; i < 5; i++) 
{ 
    trace(i); 
}

for..in

Met de lus for..in doorloopt u de eigenschappen van een object, of de elementen van een array. U kunt bijvoorbeeld een lus for..in gebruiken om de eigenschappen van een algemeen object te doorlopen (objecteigenschappen worden niet in een bepaalde volgorde bewaard, zodat eigenschappen in schijnbaar willekeurige volgorde worden weergegeven):

var myObj:Object = {x:20, y:30}; 
for (var i:String in myObj) 
{ 
    trace(i + ": " + myObj[i]); 
} 
// output: 
// x: 20 
// y: 30

U kunt ook de elementen van een array doorlopen:

var myArray:Array = ["one", "two", "three"]; 
for (var i:String in myArray) 
{ 
    trace(myArray[i]); 
} 
// output: 
// one 
// two 
// three

U kunt de eigenschappen van een object niet doorlopen als dit een instantie van een verzegelde klasse is (inclusief ingebouwde klassen en door de gebruiker gedefinieerde klassen). U kunt alleen eigenschappen van een dynamische klasse doorlopen. Zelfs bij instanties van dynamische klassen, kunt u alleen eigenschappen doorlopen die dynamisch zijn toegevoegd.

for each..in

Met de lus for each..in doorloopt u de items van een verzameling. Dit kunnen tags in een object XML of XMLList zijn, de waarden van objecteigenschappen of de elementen van een array. Het volgende voorbeeldfragment laat zien dat u met een lus for each..in de eigenschappen van een algemeen object kunt doorlopen. Anders dan bij de lus for..in bevat de variabele voor de iterator in een lus for each..in echter de waarde van de eigenschap in plaats van de naam van de eigenschap:

var myObj:Object = {x:20, y:30}; 
for each (var num in myObj) 
{ 
    trace(num); 
} 
// output: 
// 20 
// 30

U kunt een object XML of XMLList doorlopen, zoals in het volgende voorbeeld wordt getoond:

var myXML:XML = <users> 
    <fname>Jane</fname> 
    <fname>Susan</fname> 
    <fname>John</fname> 
</users>; 
 
for each (var item in myXML.fname) 
{ 
    trace(item); 
} 
/* output 
Jane 
Susan 
John 
*/

U kunt ook de elementen van een array doorlopen, zoals dit voorbeeld laat zien:

var myArray:Array = ["one", "two", "three"]; 
for each (var item in myArray) 
{ 
    trace(item); 
} 
// output: 
// one 
// two 
// three

U kunt niet de eigenschappen van een object doorlopen wanneer het object een instantie van een verzegelde klasse is. Zelfs voor instanties van dynamische klassen kunt u vaste eigenschappen (eigenschappen die zijn gedefinieerd als onderdeel van de klassendefinitie) niet doorlopen.

while

De lus while lijkt op een instructie if die zich herhaalt zolang de voorwaarde true is. De volgende code levert bijvoorbeeld hetzelfde resultaat op als het voorbeeld met de lus for :

var i:int = 0; 
while (i < 5) 
{ 
    trace(i); 
    i++; 
}

Het gebruik van een lus while in plaats van een lus for heeft als nadeel dat met de lus while heel makkelijk oneindige lussen kunnen worden gemaakt. Het codevoorbeeld van de lus for wordt niet gecompileerd als u de expressie weglaat die de tellervariabele verhoogt, maar de voorbeeldlus while wordt wel gecompileerd als u die stap weglaat. Zonder het gebruik van de expressie die i verhoogt, wordt de lus een oneindige lus.

do..while

De lus do..while is een lus while die garandeert dat het codeblok minstens één keer wordt uitgevoerd, omdat de voorwaarde wordt gecontroleerd nadat het codeblok is uitgevoerd. De volgende code is een eenvoudig voorbeeld van een lus do..while die zelfs uitvoer genereert wanneer niet aan de voorwaarde is voldaan:

var i:int = 5; 
do 
{ 
    trace(i); 
    i++; 
} while (i < 5); 
// output: 5