[07.14] 제어문(if, switch, for, while, do...while)

2024. 7. 14. 08:58카테고리 없음

제어문이란?

제어문은 조건에 따라 코드 블록을 실행하거나 반복 실행할 때 사용한다. 

블록문

중괄호({ })로 묶은 것을 말한다. 문의 끝에는 세미콜론을 붙이지만, 블록문은 붙이지 않는다. 단독으로 사용할 수 있으나 제어문이나 함수를 정의할 때 사용한다. 

조건문


if...else문

if...else문과 switch문이 있다. if...else문은 논리적 참 또는 거짓에 따라 실행할 코드 블록을 결정한다. 조건식이 불리언 값이 아니더라도 불리언 값으로 강제로 변환되어 실행한다. 

if (조건식) {
	//참이면 이 코드 블록이 실행된다. 
} else {
	//조건식이 거짓이면 이 코드 블록이 실행된다. 
}

 

switch문

주어진 표현식을 평가하여 그 값과 일치하는 표현식을 갖는 case문으로 실행 흐름을 옮긴다. 해당 사항이 없다면 default문으로 이동한다. 다만, default문은 선택 사항이다. 

switch(표현식){
	case 표현식1:
    	switch 문의 표현식과 표현식1이 일치하면 실행될 문;
        break;
    case 표현식2:
    	switch 문의 표현식과 표현식2이 일치하면 실행될 문;
        break;
    default:
    	switch 문의 표현식과 일치하는 case문이 없을 때 실행될 문;
}

 

주의 사항은 실행 흐름이 이동한 뒤에 break를 명령하지 않으면 아래에 있는 모든 case문을 실행하는 폴스루(fall through)가 발생한다. 다만, default는 맨 마지막에 위치하므로 break문을 생략하는 것이 일반적이다. 

var month = 11;
var monthName;

switch(month){
	case 1:monthName = 'January';
     break;
    
    case 2: monthName = 'February';
     break;
     .....
     
	default:monthName = 'Invalid month';
}

반복문

조건식의 평가 결과가 참인 경우에 코드 블록을 실행한다. 그 후 조건식을 다시 평가하여 여전히 참인 경우 다시 실행하여, 조건식이 거짓일 때까지 반복한다. 


for문

for문은 조건식이 거짓으로 평가될 때까지 코드 블록을 반복 실행한다. 

for(변수 선언문 또는 할당문; 조건식; 증감식){
	조건식이 참인 경우 반복 실행될 문;
}

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

 

변수 선언문, 조건식, 증감식은 모두 옵션이다. 단, 어떤 식도 선언하지 않으면 무한루프가 된다. 

for(;;) {...}

 

for문 내에 for문을 중첩해 사용할 수 있다. 

for(var i = 1; i <= 6; i++){
	for(var j = 1; j <= 6; j++){
    	if(i * j === 6) console.log(`[${i}, ${j}]`);
    }
}

/* 실행결과
[1, 6]
[2, 3]
[3, 2]
[6, 1]
*/

while문

조건식의 평가 결과가 참이면 코드 블록을 계속해서 반복 실행한다. for문은 반복 횟수가 명확할 때, while문은 반복 횟수가 불명확할 때 주로 사용한다. 

var count = 0;

while(count < 3) {
	console.log(count); //0 1 2
    count++;
}

 

조건식의 평가 결과가 언제나 참이면 무한루프가 된다. 탈출을 위해서는 if문으로 조건을 만들고 break문을 사용해야한다. 

var count = 0;

while(true){
	console.log(count);
    count++;
    if(count === 3) break;
}

do...while문

do...while문은 코드 블록을 먼저 실행하고 조건식을 평가한다. 코드 블록은 무조건 한 번 이상 실행할 때 사용한다. 

var count = 0;
do{
	console.log(count);
    count++;
} while(count < 3);