본문 바로가기
Javascript/JavaScript_스터디

[JavaScript_DeepDive] 8. 제어문

by 사장님나빠여 2022. 3. 11.

제어문은 조건에 따라 코드블록을 실행(조건문) 하거나 반복 실행(반복문) 할 때 사용한다. 일반적으로 코드는 위에서 아래 방향으로 순차적으로 실행된다. 제어문을 사용하면 코드의 실행 흐름을 인위적으로 제어할 수 있다.

 

하지만 코드의 실행 순서가 변경된다는 것은 단순히 위에서 아래로 순차적으로 진행하는 직관적인 코드의 흐름을 혼란스럽게 만든다. 따라서 제어문은 코드의 흐름을 이해하기 어렵게 만들어 가독성을 해치는 단점이 있다. 

forEach, map, filter, reduce같은 고차형 함수를 사용한 함수형 프로그래밍 기법에서는 제어문의 사용을 억제하여 복잡성을 해결하려고 노력한다.


#블록문(block statement / compound statement)

-블록문은 0개 이상의 문을 중괄호로 묶은 것으로, 코드 블록 또는 블록이라고 부르기도 한다.

-자바스크립트는 블록문을 하나의 실행 단위로 취급한다. 

-블록문은 단독으로 사용할 수도 있으나 일반적으로 제어문이나 함수를 정의할 때 사용하는 것이 일반적이다.

 

#조건문(conditional statement)

-조건문으 주어진 조건식의 평ㄱ 결과에 따라 코드 블록(블록문)의 실행을 한다.

-자바스크립트는 if...else문, switch문으로 두 가지 조건문을 제공한다.

 

※if...else문

-조건식을 추가하여 조건에 따라 실행될 코드블록을 늘리고 싶으면 else if문을 사용한다.(여러번 사용 가능)

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

//x가 짝수이면 result변수에 문자열 '짝수'를 할당하고, 홀수이면 문자열 '홀수'를 할당한다.
var x = 2;
var result;

if(x%2){	//2 % 2는 0이다. 이때 0 은 false로 암묵적 강제 변환된다.
	result = '홀수';
}	else{
	result = '짝수';
}
console.log(result);	//짝수
			
            ↓
            
var x = 2;

//0은 false로 취급한다.
var result = x % 2 ? '홀수' : '짝수';
console.log(result); //짝수

 

※switch문

-switch문은 주어진 표현식을 평가하여 그 값과 일치하는 표현식을 갖는 case문으로 실행 흐름을 옮긴다.

-case문은 상황(case)을 의미하는 표현식을 저장하고 콜론으로 마친다.

-switch문의 표현식과 일치하는 case문이 없다면 실행 순서는 default문으로 이동한다.(default문은 선택사항)

-각 case문은 마지막에 break문을 사용하여 탈출해야 한다.

-default문ㄴ에는 break문을 생략하는 것이 일반적이다. 

 

#반복문(loop statement)

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

-자바스크립트는 for문, while문, do...while문을 제공한다.

 

※for, while, do...while 생략

 

※break문

-break문은 코드블록을 탈출한다.

-코드블록을 탈출하는 것이 아니라 레이블 문, 반복문(for, for...in, for...of, while, do...while) 또는 switch문의 코드 블록을 탈출한다.

-switch문의 코드 블록 외에 break문을 사용하면 SyntaxError(문법에러)가 발생한다.

 

※continue문

-continue문은 반복문의 코드 블록 실행을 현 지점에서 중단하고 반복문의 증감식으로 실행 흐름을 이동시킨다.

-if문 내에서 실행해야 할 코드가 한 줄이라면 continue문을 사용했을 때보다 간편하지만, if문 내에서 실행해야 할 코드가 길다면 들여쓰기가 한 단계 더 깊어지므로 continue를 쓰는 것이 가독성이 좋다. 

 

댓글