루프

반복문을 사용하면 일련의 값 또는 변수를 사용하여 특정 코드 블록을 반복해서 수행할 수 있습니다. 코드 블록은 항상 중괄호( {} )로 묶는 것이 좋습니다. 코드 블록에 명령문이 하나만 포함되어 있으면 중괄호를 생략해도 되지만, 조건문에서와 같이 나중에 추가된 명령문을 코드 블록에서 실수로 제외할 수 있기 때문에 중괄호를 사용하는 것이 좋습니다. 코드 블록에 포함할 명령문을 나중에 추가하고 필수 중괄호는 추가하지 않은 경우 명령문이 루프의 일부로 실행되지 않습니다.

for

for 루프를 사용하면 특정 값 범위에서 변수를 반복할 수 있습니다. for 문에 초기 값으로 설정되는 변수, 루핑 종료 시점을 결정하는 조건문, 각 루프의 변수 값을 변경하는 표현식과 같은 세 개의 표현식을 제공해야 합니다. 예를 들어, 다음 루프는 5번 반복됩니다. i 변수 값은 0에서 시작하여 4에서 끝나며 각 행에 0부터 4까지의 숫자로 출력됩니다.

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

for..in

for..in 루프는 객체의 속성 또는 배열 요소를 반복합니다. 예를 들어, for..in 루프를 사용하여 일반 객체의 속성을 반복할 수 있습니다. 객체 속성은 특정한 순서로 보존되지 않으므로 임의의 순서로 나타납니다.

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

배열 요소를 반복할 수도 있습니다.

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

객체가 봉인 클래스(내장 클래스 및 사용자 정의 클래스 포함)의 인스턴스인 경우 객체의 속성을 반복할 수 없습니다. 속성을 반복할 수 있는 클래스는 동적 클래스뿐입니다. 동적 클래스의 인스턴스라도 동적으로 추가된 속성만 반복할 수 있습니다.

for each..in

for each..in 루프는 컬렉션의 항목을 반복합니다. XML 또는 XMLList 객체의 태그, 객체 속성의 값, 배열의 요소 등이 컬렉션의 항목이 될 수 있습니다. 예를 들어 다음 코드와 같이 for each..in 루프를 사용하여 일반 객체의 속성을 반복할 수 있지만, for..in 루프와 달리 for each..in 루프의 반복 변수에는 속성 이름 대신 속성 값이 포함됩니다.

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

다음 예제와 같이 XML 또는 XMLList 객체를 반복할 수 있습니다.

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 
*/

다음 예제와 같이 배열 요소도 반복할 수 있습니다.

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

객체가 봉인 클래스의 인스턴스인 경우 객체의 속성을 반복할 수 없습니다. 동적 클래스의 인스턴스인 경우에도 고정된 모든 속성 즉, 클래스 정의의 일부로 정의된 속성은 반복할 수 없습니다.

while

while 루프는 조건이 true 일 경우 반복되는 if 문과 비슷합니다. 예를 들어, 다음 코드에서는 for 루프의 예제와 동일한 결과를 생성합니다.

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

for 루프 대신 while 루프를 사용할 때의 한 가지 단점은 while 루프를 사용할 때 무한 루프가 작성될 가능성이 높다는 점입니다. for 루프 예제 코드는 카운터 변수를 증가시키는 표현식을 생략하면 컴파일되지 않지만, while 루프 예제는 해당 단계를 생략해도 컴파일됩니다. 루프에 i 를 증가시키는 표현식이 없으면 무한 루프가 됩니다.

do..while

do..while 루프는 코드 블록이 한 번 이상 실행되는 while 루프입니다. 이는 코드 블록이 실행된 후 조건이 확인되기 때문입니다. 다음 코드는 조건을 충족하지 않아도 출력을 생성하는 간단한 do..while 루프 예제를 보여 줍니다.

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