[Deep Dive] 8장 제어문

팡긍·2022년 5월 5일
0

JavaScript Deep Dive

목록 보기
6/8

제어문 control flow statement 은 조건에 따라 코드 블록을 실행하거나 반복할 때 사용한다. 코드는 일반적으로는 순차적으로 실행되지만, 제어문을 사용하면 코드 흐름을 인위적으로 바꿀 수 있게 된다.

8.1 조건문

조건문 conditional statement 은 주어진 조건식의 평가 결과에 따라 실행할 코드를 결정한다. 다음과 같은 두 가지 조건문이 있다.

  • if...else
  • switch

8.1.1 if...else

if...else 문은 주어진 조건식의 평가 결과(논리적 참, 거짓)에 따라 실행할 코드 블록을 결정한다.

if (조건식) {
  // 조건이 참일 때
} else {
  // 조건이 거짓일 때
}

👉 if 문의 조건식은 Boolean 값으로 평가되어야하며, 조건식을 더 늘리고 싶다면 else if 를 사용하면 된다. 또한 elseelse if는 옵션이기에 사용할 필요가 없다면 사용하지 않아도 된다.

8.1.2 switch

switch 문은 주어진 표현식을 평가하여 그 값과 일치하는 표현식을 갖는 case 문으로 실행 흐름을 옮긴다. 만약, 표현식과 일치하는 case 문이 없다면, default 문으로 이동하면 되고, default도 옵션이라 사용하지 않아도 된다. 하지만 언제든 예외가 발생하기 마련이니 사용하는 것이 좋아보인다.

switch(표현식) {
  case 표현식1:
    // 표현식과 표현식1이 만족하면 실행된다.
    break;
  case 표현식2:
    // 표현식과 표현식2가 만족하면 실행된다.
    break;
  default:
}

👉 switch 문을 사용할 때 주의할 점은 break이다. break를 적절히 사용하지 않으면, 표현식과 일치하지 않아도 실행 흐름이 다음 flow. 즉, 다음의 case로 넘어가기 때문이다.


8.2 반복문

반복문 loop statement 은 조건식의 평가 결과가 참인 경우 코드를 실행한다. 그 후 조건식을 계속해서 평가하며, 조건식이 거짓일 때까지 반복 실행된다. JS는 세 가지 반복문을 제공한다.

  • for
  • while
  • do...while

8.2.1 for

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

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

👉 for 문은 중첩해서 사용 가능하다. 하지만, 알고리즘을 생각 했을 때, 중첩 할수록 수행 시간도 늘어나기에 반복 중첩을 하기 전에 효율을 따져보자.

8.2.2 while

while 문 또한 주어진 조건식의 평가가 참일 때 코드를 반복해서 실행하게 되는데, for문은 반복 횟수가 확실하게 정해졌을 때 주로 사용하고, while 문은 반복 횟수가 불명확할 때 사용한다.

// 무한 루프
while (true) { ... }

👉 주로 while문 안에 조건문을 넣어 특정 조건이 충족 되었을 때, break를 사용하여 종료하는 방식으로 사용한다.

8.2.3 do...while

do...while 문은 코드를 먼저 한 번 이상 실행한 다음에 조건을 평가한다.

var count = 0;

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

8.3 break 문

switch 문과 while 문에서 봤듯, 반복되어 실행되는 코드 블럭을 탈출한다.
단, 레이블문, 반복문, switch 외에 사용하면 SyntaxError가 발생한다.

👉 레이블 문 Label Statement란?
식별자가 붙은 statement를 뜻한다.

foo: console.log('foo'); // foo라는 레이블 식별자가 붙음.
outer: for(var i = 0; i < 3; i++) {
  for (var j = 0; j < 3; j++) {
    if (i + j === 3) break outer;
    console.log(`inner[${i}, ${j}]`);
  }
}

console.log('Done!');

위의 코드와 같이 레이블 문은 중첩된 for 문 외부로 탈출할 때 유용하지만 그 밖의 경우에는 일반적으로 권장하지 않는다. 이는 코드의 흐름이 복잡해지고, 가독성 또한 나빠진다. 결국 내가 원치 않는 결과값이나 오류를 뿜어낼 가능성이 높다.

break 문은 반복문을 더 이상 진행하지 않아도 될 때 사용하도록 하자.


8.4 continue 문

continue 는 반복문의 코드 실행을 현 시점에서 중단하고 반복문의 증감식으로 실행 흐름을 이동한다. 이 문을 만나면 코드를 현 시점에서 중단하는건 break와 같지만 다른 점은 반복문을 탈출하지 않는다는 것이다.

0개의 댓글