[모던 자바스크립트] 08장. 제어문

Daehyun·2022년 10월 15일
0
post-thumbnail

제어문(control flow statement)은 조건에 따라 코드 블록을 실행(조건문)하거나 반복 실행(반복문)할 때 사용한다. 제어문을 사용하면 코드의 실행 흐름을 인위적으로 제어할 수 있다. 코드는 일반적으로 위에서 아래로 순차적으로 진행되지만 제어문은 코드의 흐름을 제어해 가독성을 해치키도 한다. 이는 추후 고차함수를 통해 해결할 수 있다.

🧱8.1 블록문

블록문(block statement/compound statement)은 0개 이상의 문을 중괄호'{}'로 묶은 것으로, 코드 블록 또는 블록이라고 부른다. 자바스크립트는 블록문을 하나의 실행 단위로 취업한다. 블록문의 끝에는 세미콜론을 붙이지 않는다.

🔧8.2 조건문

조건문(conditional statement)은 주어진 조건식(condition expression)의 평가 결과에 따라 코드 블록(블록문)의 실행을 결정한다. 조건식은 불리언 값으로 평가될 수 있는 식이다.

if ... else문은 주어진 저건식의 평가 결과, 논리적 참 거짓에 따라 실행할 코드블록을 결정한다. 평가 결과가 true이면 if 아니면 그 다음의 else if나 else문의 코드가 실행된다. 이러한 if ... else문은 삼항 조건 연산자로도 바꿔 쓸 수 있다.

if (num > 0) kind = '양수'
else if (num < 0) kind = '음수'
else kine = '0';
// 삼항연산자 변환
kind = num > 0 ? '양수' : (num < 0 ? '음수' : '0');

switch문은 주어진 표현식을 평가하여 그 값과 일치하는 표현식을 갖는 case 문으로 실행 흐름을 옮긴다. case문은 상황을 의미하는 표현식을 지정하고 콜론으로 마친다. 일치하는 case 문이 없다면 default문을 실행시키나, default문은 선택사항이다.

let num = 3;
let name;
switch (num) {
  case 1: name = 'one';
    break;
  case 2: name = 'two';
    break;
  case 3: name = 'three';
    break;
  default: name = 'other';
}
console.log(name); //three

break문을 통해 해당 case일때 switch문을 빠져나가도록 해준다. 그렇지 않으면 항상 other이 출력되게 된다.

🔁8.3 반복문

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

for (let i = 0; i < 2; i++) // 변수 선언; 조건식; 증감식 / 조건식이 참이면 코드블록 실행
  console.log(i);
// 1 2
let i = 0;
while (i < 2) //조건식이 참이면 코드블록 실행
  console.log(i++);
// 1 2

위와 같이 반복문을 사용할 수 있으며 내부에 중첩하여 사용할 수도 있다. 조건식에 아무것도 없거나 항상 true인 경우 무한루프가 진행된다. 내부에서 break문이나 continue문을 사용하여 제어할 수도 있다.

🚫8.4 break 문

break문은 레이블 문, 반복문 등의 코드 블록을 탈출한다.

//foo 라는 식별자가 붙은 레이블 블록문
foo: for (let i = 0; i < 100; i++) {
    for (let j = 100; j > 0; j--)
      if (i === j)
        break foo; // i와 j가 같아지면 foo 식별자가 붙은 for문 탈출 (바깥 for문 탈출)
}

♻️8.5 continue 문

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

for (let i = 0; i < 100; i++)
{
  if (i % 2 === 0)
    continue; //짝수이면 continue에 의해 console.log를 실행시키지 않고 for문의 증감식으로 올라간다.
  console.log(i); // 홀수만 출력시키게 된다.
}

0개의 댓글