| 분류 | 제어 구문 | 설명 |
|---|---|---|
| 조건문 | if/else 문, switch 문, try/catch/finally 문 | 조건에 따라 처리를 분기 |
| 반복문 | while 문, do/while 문, for 문, for/in 문, for/of 문 | 조건을 만족하면 처리를 반복 실행 |
| 점프문 | break 문, continue 문, return 문, throw 문 |
기본적인 조건문으로 크게 다음과 같이 두 가지 형태로 나눌 수 있다.
1. if (조건식) 문장
2. if (조건식) 문장 1 esle { 문장 2 }
분기점이 많아지는 경우 보다 간결하게 표현할 수 있게 해준다.
switch(표현식) {
case 표현식 1 : 실행문 1 ( 문장 여러 개 )
case 표현식 2 : 실행문 2 ( 문장 여러 개 )
...
case 표현식 n : 실행문 n ( 문장 여러 개 )
default: 실행문 n + 1 ( 문장 여러 개 )
}
switch 문에서 fall-through란, 하나의 case 절에서 break 문을 사용하지 않고 다음 case 절로 코드 실행 흐름이 이어지는 것을 말한다. 폴 스루를 사용하면 알고리즘이 복잡해지는 경우가 많으므로, 가능하면 사용하지 않는 것이 좋다.
while (조건식) 문장
while 문 안에서는 break 문과 continue 문을 사용할 수 있다.
do 문장 while(조건식);
do/while 문 끝에는 반드시 세미콜론이 붙는다.do/while 문을 실행하면 먼저 문장을 실행한 후 뒤에 조건식을 평가한다.
for( 초기화 식; 조건식; 반복식 ) 문장
for ( 변수 in 객체 표현식 ) 문장
ex)
var obj = {a:1, b:2, c:3};
for(var p in obj) {
console.log("obj." + p + " = " + obj[p]);
}
obj.a = 1
obj.b = 2
obj.c = 3
프로그램의 다른 위치로 이동하는 제어 구문
break;
가장 안쪽에 있는 반복문이나 switch 문에서 빠져나온다.
break 라벨 이름;
라벨이 붙은 문장 끝으로 점프한다.
ex)
var a = [2, 4, 6, 8, 10], b = [1, 3, 5, 6, 9, 11];
loop: for(var i = 0; i < a.length; i++) {
for(var j = 0; j < b.length; j++) {
if( a[i] == b[j] ) break loop;
}
}
console.log("a[" + i + "] = b[" + j "]"); // -> a[2] = b[3]
반복문에서만 사용가능하다는 것 외에는 break문과 같다.
ex)
var a = [2, 5, -1, 7, -3, 6, 9];
for(var i = 0, sum = 0; i < a.length; i++) {
if ( a[i] < 0 ) continue;
sum += a[i];
}
console.log(sum); // -> 29