[JavaScript] 조건문 switch문과 fall-through

조건문

JavaScript에서 조건문은 주어진 조건식이 참(true)인지 거짓(false)인지에 따라 다른 코드 블록을 실행하는 제어 구문입니다. JavaScript에서는 대표적으로 if, else if, else, switch 등의 조건문을 사용할 수 있습니다.

 

 

switch문

switch문은 변수와 일치하는 case문으로 실행흐름을 옮깁니다.

switch문과 일치하는 case문이 없다면 실행순서는 default문으로 이동합니다. 참고로 default문은 선택사항으로 사용할 수도 있고 사용하지 않을 수도 있습니다.

 

 

switch문 구조

JavaScript에서 switch 문은 다음과 같은 구조를 가집니다.

switch (변수) {
  case 값1:
    // 변수의 값이 값1과 일치할 때 실행되는 코드 블록
    break;
  case 값2:
    // 변수의 값이 값2와 일치할 때 실행되는 코드 블록
    break;
  // 추가적인 case 문이 필요하면 이곳에 추가
  default:
    // 위의 어떤 case 문에도 해당하지 않을 때 실행되는 코드 블록
}

예를 들어, 변수 fruit의 값에 따라 다른 메시지를 출력하는 switch 문을 작성해보겠습니다.

let fruit = 'apple';

switch (fruit) {
  case 'banana':
    console.log('This is a banana.');
    break;
  case 'apple':
    console.log('This is an apple.');
    break;
  case 'orange':
    console.log('This is an orange.');
    break;
  default:
    console.log('I do not recognize this fruit.');
}

위의 코드에서 fruit 변수의 값이 'apple'이므로 case 'apple': 아래에 있는 코드 블록이 실행되어 "This is an apple."이 출력됩니다. 

만약 fruit 변수의 값이 'grape'와 같이 위의 어떤 case 문에도 해당하지 않는 경우, default 아래에 있는 코드 블록이 실행되어 "I do not recognize this fruit."이 출력됩니다.

 

 

fall-through(폴스루)

switch 문에서 fall-through란, 하나의 case 절에서 break 문을 사용하지 않고 다음 case 절로 코드 실행 흐름이 이어지는 것을 의미합니다. 일반적으로 case 절에서 실행될 코드 블록이 끝나면 break 문을 사용하여 switch 문을 빠져나와야 합니다.

하지만 break 문을 생략하면 해당 case의 코드 블록을 실행하고, 다음 case 절로 코드 실행 흐름이 연이어서 이어집니다.

예를 들어, 다음 코드에서는 fall-through를 사용하여, case '3'에서 실행된 코드 블록 다음에, case '4'에서 실행될 코드 블록이 바로 실행됩니다.

let num = '3';

switch (num) {
  case '1':
    console.log('숫자 1입니다');
    break;
  case '2':
    console.log('숫자 2입니다');
    break;
  case '3':
  case '4':
    console.log('숫자 3 또는 4입니다');
    break;
  default:
    console.log('숫자가 아닙니다');
}

위 코드에서 num 변수의 값이 '3'이므로, case '3'에서 fall-through가 발생하고, 이후에 있는 case '4'에서 실행될 코드 블록까지 실행되어 "숫자 3 또는 4입니다"가 출력됩니다.

fall-through는 의도적으로 사용하기도 하지만, 실수로 발생하기도 합니다. 

따라서, switch 문을 작성할 때는 break 문을 잊지 않고 사용하는 것이 좋습니다.