8장. 제어문

Doozuu·2023년 4월 1일
0

Javascript

목록 보기
46/99

제어문

: 조건에 따라 코드 블록을 실행하거나 반복 실행할 때 사용한다.(조건문/반복문)

  • 일반적으로 코드는 순차적으로 실행되지만 제어문을 사용하면 코드의 실행 흐름을 인위적으로 제어할 수 있다.



8.1 블록문

0개 이상의 문을 중괄호로 묶은 것.

  • 코드 블록 또는 블록이라고 부르기도 한다.
  • 단독으로 사용할 수도 있으나 일반적으로 제어문이나 함수를 정의할 때 사용한다.
  • 블록문은 언제나 문의 종료를 의미하는 자체 종결성을 갖기 때문에 끝에 세미콜론을 붙이지 않는다.
{
	var foo = 10;
}



8.2 조건문

조건식의 평가 결과에 따라 블록문의 실행을 결정한다.

8.2.1 if else 문

: 조건식의 평가 결과(Boolean 값)에 따라 실행할 코드 블록을 결정한다.
(대부분의 if else 문은 삼항 조건 연산자로 바꿔쓸 수 있다.)

if(조건식 1){
	// 조건식 1이 참이면 실행
} else if(조건식 2) {
	// 조건식 2가 참이면 실행
} else{
	// 조건식 1, 2가 모두 거짓이면 실행 
}
  • 코드 블록 내의 문이 하나뿐이라면 중괄호를 생략할 수 있다.
if(조건식 1) 		 // 조건식 1이 참이면 실행
else if(조건식 2) // 조건식 2가 참이면 실행
else 			// 조건식 1, 2가 모두 거짓이면 실행 

8.2.2 switch 문

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

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

if else 와 switch의 차이

  • if else 문은 논리적 참, 거짓으로 실행할 코드 블록을 결정한다.
  • switch 문은 논리적 참, 거짓보다는 다양한 상황에 따라 실행할 코드 블록을 결정할 때 사용한다.
  • break를 사용하지 않으면 문을 실행한 후 switch문을 탈출하지 않고 switch 문이 끝날 때까지 이후의 모든 case문과 default 문을 실행하게 되는데, 이를 fall through 라고 한다. break는 코드 블록에서 탈출하는 역할을 한다.
  • default 문에는 break 문을 생략하는 것이 일반적이다.(마지막에 위치하므로 자동으로 종료되면 switch 문을 빠져나가기 때문에 필요하지 않음.)
  • 다양한 키워드를 사용해야 하고 문법이 복잡하므로 if else문으로 해결할 수 있다면 if else 문을 사용하는 편이 좋다.



8.3 반복문

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

8.3.1 for 문

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

for(변수 선언문 또는 할당문; 조건식; 증감식){
	조건식이 참인 경우 반복 실행될 문;
}
  • 변수 선언문의 변수 이름은 반복을 의미하는 iteration의 i를 사용하는 것이 일반적이다.

  • 변수 선언문, 조건식, 증감식은 모두 옵션이므로 반드시 사용할 필요는 없다.

  • 중첩 for문으로도 사용가능하다.


8.3.2 while 문

주어진 조건식의 평가 결과가 참이면 코드 블록을 계속해서 반복 실행한다.

while(조건식){
	조건식이 참인 경우 반복 실행될 문;
}

for 문과 while 문의 차이점

for 문은 반복 횟수가 명확할 때 주로 사용한다.
while 문은 반복 횟수가 불명확할 때 주로 사용한다.


8.3.3 do while 문

코드 블록을 먼저 실행하고 조건식을 평가한다.
따라서 코드 블록은 무조건 한 번 이상 실행된다.

do {
	조건식이 참인 경우 반복 실행될 문;
} while(조건식)



8.4 break 문

레이블 문, 반복문, switch 문의 코드 블록을 탈출한다.
(이외에 break 문을 사용하면 SyntaxError가 발생한다.)

레이블 문

: 식별자가 붙은 문

  • switch의 casebreak도 모두 레이블 문이다.
  • 레이블 문을 탈출하려면 break 문에 레이블 식별자를 지정한다.

⭐️ 중첩된 for 문에서 내부 for 문이 아닌 외부 for 문을 탈출하려면 레이블 문을 사용한다.

가독성이 나빠지고 오류를 발생시킬 가능성이 높아지기 때문에 이외의 경우에는 일반적으로 권장되지 않는다.

outer : for(var i=0;i<3;i++){
	for(var j=0;j<3;j++){
    	if(i + j === 3) break outer;
    }
}



8.5 continue 문

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

  • 반복문을 탈출하지는 않는다.
var string = 'Hello World';
var search = 'l';
var count = 0;

fot(var i=0;i<string.length;i++){
	if(string[i] !== search) continue; // 일치하지 않는 경우 아래 코드가 실행되지 않음.
    count++;
}
profile
모든게 새롭고 재밌는 프론트엔드 새싹

0개의 댓글