2 분 소요


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


1. 블록문


  • 블록문은 0개 이상의 문을 중괄호({})로 묶은 것
  • 자바스크립트는 블록문을 하나의 실행 단위로 취급
  • 일반적으로 제어문이나 함수를 정의할 때 사용
  • 블록문은 자체종결성을 가지므로 세미콜론(;)을 붙이지 않음


2. 조건문


조건문은 주어진 조건식의 평가 결과에 따라 코드 블록(블록문)의 실행을 결정.

if ... else

if ... else문은 주어진 조건식의 논리적 참, 거짓에 따라 실행 블록 결정.

if (조건식){
  // 조건식이 참(true)일때 이 코드 블록 실행
} else {
  // 조건식이 거짓(false)일때 이 코드 블록 실행
}


조건문을 여러개 만들 수 있는데 else if를 사용하면 된다

if (조건식1){
  // 조건식1 참(true)일때 이 코드 블록 실행
} else if(조건식2) {
  // 조건식2 참(true)일때 이 코드 블록 실행
} else if(조건식3){
  // 조건식3 참(true)일때 이 코드 블록 실행
} else {
  // 모든 조건식이 거짓(false)일때 이 코드 블록 실행
}

if ... else문은 위에서 순서대로 진행된다 (범위를 조건으로 했을때 주의)

대부분의 if ... else문은 삼항 조건 연산자로 표현할 수 있다

switch

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

switch (표현식) {
  case 표현식1: 표현식과 표현식1이 일치하면 실행;
    braek;
  case 표현식2: 표현식과 표현식2가 일치하면 실행;
    braek;
  case 표현식3: 표현식과 표현식3이 일치하면 실행;
    braek;
  default: 아무것도 일치하지 않을때 실행;
}

switch문의 case를 보면 break가 포함되어 있는데 코드 블록을 출하는 역할을 함.

`braek`를 사용하지 않으면 `default`가 실행된다.

* 폴스루(fall through)
switch문에서 의도적으로 break를 생략하여 여러 조건을 동일하게 사용한다.


3. 반복문


반복문은 조건식의 평가 결과가 참인 경우 코드 블록을 반복해서 실행(거짓일 때까지 반복).


< 자바스크립트의 반복문 대체 >

  • forEach : 배열을 순회
  • for...in : 객체의 프로퍼티를 열거
  • for...of : 반복문 대체 [ES6]

for

for (변수선언  할당; 조건식; 증감식){
  // 조건식이 참인 경우 반복해서 실행 (조건식이 거짓일 때까지)
}
// 1부터 10까지 출력
for (let i = 1; i<=10; i++){
  console.log(i)
}

위 코드를 순서대로 살펴보면,

  1.   i는 let키워드를 사용해서 선언 및 1을 할당했고,
  2.   i<=10이 조건식으로 있고 현재 i는 1이므로 true코드블록 실행
  3.   i를 출력 → 1 출력
  4.   증감식으로 i++, 코드블록 실행 이후 i가 1증가하고,
  5.   이후 조건식의 true, false 여부판단 → 코드블록 실행(조건식이 false일 때까지)


// 무한루프
for (;;){
  // 코드실행
}
  • for문의 무한루프는 이렇게 사용이 가능.
  • for문은 중첩할 수 있다.


while

while문은 주어진 조건식의 평가 결과가 참(false)이면 코드블록을 계속해서 반복 실행.

while(조건식){
  // 조건식이 참(true)이면 코드 반복 실행
}
// 1부터 9까지 출력
let i = 1;
while(i<10){
  console.log(i)
  i++;
}

예시) 1 ~ 9 출력

// 무한루프
while(true){
  // 코드 실행
}


do...while

do...while문은 코드블록을 먼저 실행하고 조건식을 평가 → 무조건 한번은 실행

do{
  // 코드 실행
} while(조건문)


4. break


break문은 코드 블록을 탈출하는데 레이블문, 반복문, switch을 탈출한다
→   이외 코드블록에서는 **SyntaxError(문법에러) 발생**

레이블문 : 식별자가 붙은 문을 말함

내부 코드블록이 아닌 외부 코드 블록을 탈출하려고 할때 식별자를 붙이고 braek에 식별자를 명시.

outer: for (;;){
  for (let i = 1; i<100; i++) {
    console.log(i)
    if (i === 50){
      break outer;
    }
  }
}

i가 50 일때 외부코드블록을 탈출시킨다.


5. continue


continue문은 반복문의 코드 블록 실행을 건너뛰고 진행한다.

for (let i = 1; i<10; i++) {
  if (i === 5){
    continue;
  }
  console.log(i)
}

i가 5일때 continue가 있는 해당 지점부터 코드블록을 건너뛰고 i가 6일때로 진행된다.



이웅모 선생님의 모던 자바스크립트 Deep Dive를 공부하기 위해 정리한 글입니다.
혹시나 보시다가 고칠 부분이나 마음에 안드시는 부분이 있다면 말씀해주시면 감사하겠습니다!