제어문 (control flow statement )은 조건에 따라 코드 블록을 실행하거나 반복 실행할 때 사용된다.

코드는 일반적으로 위에서 아래 방향으로 순차적으로 실행된다. 하지만 제어문을 사용하면 코드의 실행 흐름을 인위적으로 제어할 수 있다.

❗ 블록문

블록문 ( block statement / compound statement ) 은 0개 이상의 중괄호를 묶은 것으로 '코드 블록', '블록'이라고 부르며, 세미클록을 붙이지 않는다.

//코드 블록
{
    var foo = 10;
}

❗ 조건문

조건문 ( conditional statement ) 는 주어진 조건식의 평가 결과에 따라 코드 블록의 실행을 결정한다.
조건문은 if..else 문과 switch 문으로 나뉜다.

❓ if ... else 문

if (조건식1) {
    조건식1이 참일 경우 실행
    
}else if(조건식2){
    조건식1이 거짓이고 2가 참일 경우 실행
    
}else{
    모든 조건식이 거짓일 경우 실행
}

if..else 문은 주어진 조건식의 결과에 따라(true, false) 실행할 코드 블럭이 달라진다.

  • else if 와 else는 옵션이기 때문에 사용여부는 개발자의 자유이다.
  • else if 는 여러번 사용하여 조건을 추가적으로 붙일 수 있다.

대부분의 if..else삼항 조건 연산자로 바꿔서 쓸 수 있다.

var x = 2;
var result;

//조건문
if (x % 2){ // 2 % 2 = 0 => false
    result = '짝수';
}else{
    result = '홀수';
}
//삼항 조건 연산자
result = (x % 2)?'짝수':'홀수';

간단한 if..else 문은 삼항 조건 연산자로 대체하여 사용하는 것이 가독성이 좋지만, 조건이 많아질수록 if..else 문을 사용하는 것이 가독성이 더 좋다.

❓ switch 문

switch (표현식){
    case 표현식1:
        실행문;
        break;
    
    case 표현식2:
        실행문;
        break;
    
    default:
        실행문;
}

switch 문은 주어진 표현식을 평가하여 그 값과 일치하는 표현식을 갖는 case 문으로 실행 흐름을 옮기며, 값과 일치하는 case가 없을 경우 default 문으로 이동한다.

var x = 2
var result
switch (x % 2) {
    case 0:
        result = '짝수'
        break
    case 1:
        result = '홀수'
        break
    default:
        result = '숫자가 아님'
}
  • case 문은 여러번 사용하여 표현식의 값을 추가할 수 있다.

  • case 문이 끝나고 break 으로 조건식을 끝내지 않는다면 fall through가 발생한다.
    fall through : 값과 일치하는 case 문으로 이동하였지만 switch 문을 탈출하지 않아, 모든 case의 값이 재할당된 후 결국 default의 값이 재할당된 상태.

  • fall through가 일어나면 결국 result에는 '숫자가 아님' 이 담길 것이다.

❗ 반복문

반복문 ( loop statement ) 은 조건식의 평가 결과가 true 경우 코드 블록을 실행하며, false일 때까지 반복 실행한다.

반복문은 for, while, do ... while 문으로 나뉜다.

❓ for 문

for (변수 선언 또는 할당; 조건식; 증감식){
    true일 경우 반복 실행할 문;
}
for (var i=0; i <2; i++){
    console.log(i);
}
// 0 , 1

변수로 선언한 i 가 0으로 시작하여 1씩 증가되고( i++), 2 이상의 값이 재할당될 때까지 ( i<2) console.log(i);를 실행한다.

  • 변수 선언문, 조건식, 증감식은 옵션이기 때문에 생략할 수 있다.
    for(;;){...} => 무한 루프

  • for문은 여러 for문을 중첩하여 사용할 수 있다.

❓ while 문

while(조건식){
  
    조건식이 true 일 경우 반복 실행할 문;
}
var i = 0;
while(i<2){
    console.log(i);
    i++;
} 
// 0 , 1

위 for 문 예제와 동일한 값을 갖는다.

  • for 은 정확한 반복 횟수가 정해지고 알고 있을 때 사용, while 은 반복 횟수를 모른체 조건문으로 사용

  • 조건식 부분은 true / false 로 사용한다.
    while(true){반복문} => 무한루프

❓ do ... while 문

do {
    반복 실행될 문
} while (조건식)
var i = 0
do {
    console.log('안녕!')
    i++
} while (i < 0)
 // 안녕!

do ... while 문은 조건에 만족하지 않더라도 do에 있는 실행문을 모조건 한 번 실행한다.

❗ break

레이블 문 , 반복문 , switch 문에서 사용 가능하며, 해당 코드 블록을 탈출한다.

for (var i = 0; i < 2; i++) {
    console.log(i)
    break
} // 0

break 가 없었다면 0 , 1이 나왔어야 했지만, 첫 번째 실행에서 console.log(i); 을 만난 후 break를 통해 for문을 빠져나와 종료되었다.

❗ continue

반복문의 코드 블록 실행에서 현 지점을 중단하고, 다음 실행 흐름으로 이동한다.


for (var i = 0; i < 5; i++) {
    if (i === 1) {
        continue
    }
    console.log(i)
} // 0 , 2 , 3, 4

i 가 1을 할당 받는 실행 흐름에서 continue 문을 만나, console.log(i); 를 거치지 않고 다음 실행 흐름인 i = 2 로 넘어간다.

profile
코드 한 줄이 나를 증명하는 개발자

0개의 댓글