루프

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

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