제어문 control flow statment 은 조건에 따라 코드 블록을 실행(조건문)하거나 반복 실행(반복문)할 때 사용한다. 일반적으로 코드는 위에서 아래 방향으로 순차적으로 실행된다. 제어문을 사용하면 코드의 실행 흐름을 인위적으로 제어할 수 있다.
불리언 값을 갖는 조건식의 평가 결과에 따라 코드 블록의 실행을 결정한다.
2.1 if ... else 문
else if, else 문은 옵션이다. else if 문은 여러 번 사용할 수 있다.
만약 코드 블록 내의 문이 하나뿐이라면 중괄호를 생략할 수 있다.
삼항 조건 연산자로 바꿔 쓸 수 있다.
→ 조건에 따라 단순히 값을 결정하여 변수에 할당하는 경우 삼항 조건 연산자를,
조건의 가지수가 많다면 if ... else 문을 사용하는 것이 가독성면에서 좋다.
2.2 switch 문
if ... else문과는 다르게 논리적 참, 거짓보다는 다양한 상황(case)에 따라 실행할 코드 블록을 결정할 때 사용한다.
주어진 표현식을 평가하여 그 값과 일치하는 표현식을 갖는 case 문으로 실행 흐름을 옮긴다.
case 문은 상황을 의미하는 표현식을 지정하고 콜론으로 마친다. 그리고 그 뒤에 실행할 문들을 위치시킨다.
switch 문의 표현식과 일치하는 case문이 없다면 실행 순서는 default문으로 이동한다. default 문은 옵션.
fall through : 표현식 평가결과와 일치하는 case문을 실행한 후 switch 문을 탈출하지 않고 switch문이 끝날 때까지 나머지 case문과 default문을 실행하는 경우
→폴스루를 이용해 여러 개의 case 문을 하나의 조건으로 사용할 수도 있다. ( 2월의 일수를 계산하는 예)
default 문은 switch 문의 맨 마지막에 위치하므로 별도의 break 문이 필요없다.
조건식의 평가 결과가 거짓일 때까지 코드 블록을 반복하여 실행한다.
3.1 for 문
for(변수 선언문 또는 할당문; 조건식; 증감식){
조건식이 참인 경우 반복 실행될 문;
}
이때 변수 선언문, 조건식, 증감식은 모두 옵션으로 반드시 사용할 필요는 없다. 어떤식도 선언하지 않으면 무한루프가 된다.
let arr = [..]
for( let i = 0; i < 10; arr[i++] = 0)
3.2 while 문
주어진 조건식의 평가 결과가 참이면 코드 블록을 계속해서 반복 실행한다.
for문은 반복 횟수가 명확할 때 주로 사용하고 while문은 반복 횟수가 불명확할 때 주로 사용한다.
3.3 do ... while 문
코드 블록을 먼저 실행하고 조건식을 평가한다. 따라서 코드 블록은 무조건 한번 이상 실행된다.
레이블 문, 반복문 switch 문의 코드 블록을 탈출한다. 이외의 코드 블록에 break문을 사용하면 syntaxError가 발생한다.
반복문을 더 이상 진행하지 않아도 될 때 불필요한 반복을 회피할 수 있다.
반복문의 코드 블록 실행을 현 지점에서 중단하고 반복문의 증감식으로 실행 흐름을 이동시킨다.
for(let i = 1; i ≤ 6; i++){
for(let j = 1; j ≤6; j++ {
if(i+j ===6) continue;
}
}