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