[modern JS Deep Dive] - 8장 . 제어문

유선향·2025년 1월 18일
0

<modern_JS_Deep_Dive>

목록 보기
9/44

제어문, 블록문, 조건문

제어문

  • 제어문은 조건에 따라 코드 블록을 실행(조건문)하거나 반복 실행(반복문) 할 때 사용한다.
  • 코드의 실행 흐름을 인위적으로 제어할 수 있다.
  • forEach,map,filter,reduce 같은 고차 함수를 사용한 함수형 프로그래밍 기법에서는 제어문의 사용을 억제하여 복잡성을 해결할수 있다.

블록문

  • 0개 이상의 문을 중괄호로 묶은것
  • 단독으로 사용할 수도 있으나 제어문이나 함수를 정의할 때 사용하는것이 일반적이다.

조건문

  • 주어진 조건식의 평가 결과에 따라 코드 블록(블록문)의 실행을 결정
  • if …else & switch 문으로 두가지 조건문을 제공한다
    • if …else 문은 논리적으로 참, 거짓으로 실행할 코드 블록을 결정 할때 사용
    • switch 문은 논리적 참거짓 보다는 다양한 상황에 따라 실행할 코드블록을 결정 할때 사용

if …else

  • else, elseif 는 옵션
  • 대부분의 if …else 문은 삼항 조건 연산자로 바꿀수 있다.
if (조건식1){
	//참일때 
}else if (조건식2){
	//조건식이 참일때
} else {
	//if 말고는 여기 실행
}

switch

  • 주어진 표현식을 평가하여 그 값과 일치하는 표현식을 갖는 case 문으로 실행 흐름을 옮긴다.
  • switch 문의 표현식과 일치하는 case 문이 없다면 실행 순서는 default 문(선택사항)으로 이동
  • 만약 break 문을 작성하지 않으면, switch 문을 탈출하지 않고 모든 case 문과 default 문을 실행한다.(풀스루)
switch (표현식) {
	case 표현식1 :
		//실행 문
		break
	case 표현식2 :
		//return 실행 문
	default :
		일치하는 case문이 없을때 실행될 문
}
  • 풀 스루가 유용한 경우
let year = 2000 //2000년은 윤년으로 2월이 29일임
let month = 2
let days = 0

switch (month) {
	case 1 : case 3: case 5:...
		days =31
		break
	case 4 : case 6: case 9:...
		days =30
		break
	case 2 :
		//2월일때, 윤년인지 계산하는 알고리즘
		break
	default :
		console.log('')
}

반복문

반복문

  • 조건식의 평가 결과가 참인 경우 코드 블록을 실행한다.
  • for , while , do …while 문을 제공한다.
  • 반복문을 대체할 수 있는 다양한 기능
    • 자바스크립트는 배열을 순회할 때 사용하는 forEach 메서드, 객체의 프로퍼티를 열거할 때 사용하는 for …in , for …of 문과 같이 반복문을 대체할 수 있는 다양한 기능을 제공

for 문

  • 조건식이 거짓으로 평가될 때까지 코드 블록을 반복 실행
for (변수 선언 or 할당문 ; 조건식 ; 증감식) {
	//조건식이 참인 경우 반복 실행될 문
}

while 문

  • 주어진 조건식의 평가 결과가 참이면 코드 블록을 계속해서 반복 실행
  • for 문은 반복 횟수가 명확할 때 주로 사용하고 while 문은 반복 횟수가 불명확할 때 주로 사용
  • while 문은 조건문의 평가 결과가 거짓이 되면 코드 블록을 실행하지 않고 종료
  • 조건식의 평가 결과가 언제나 참이면 무한루프가 된다.
  • break 문으로 코드 블록 탈출도 가능하다.

do … while 문

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

break / continue 문

break

  • 레이블문, 반복문, switch 문의 코드 블록을 탈출한다.
  • 그외의 문에서 break 문을 사용하면 문법 에러가 발생한다.
    • 레이블문 : 식별자가 붙은 문

    • 프로그램의 실행 순서를 제어하는데 사용 (사실 case, default 문도 레이블 문이다)

    • 중첩 반복문을 탈출할 때 유용하지만, 가독성 문제로 일반적으로 권장 하지 않는다

      foo : console.log('foo') //레이블 문 foo
      
      foo : {
      	console.log()
      	break foo // 탈출
      }

continue 문

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

0개의 댓글