[TIL] 2020. 07. 19. Switch

달밤·2020년 7월 19일
1

TIL

목록 보기
75/110
post-thumbnail

오늘 배운 것

Switch

if 문을 중첩해서 사용하게 되면 가독성이 떨어지게 된다. 이럴경우 Switch 문을 사용한 비교법으로 간단하게 작성해 볼 수 있다.

다만 <, >, >=, <=, !==와 같은 비교연산자는 Switch 문에서 사용할 수 없다.

출처 : MDN

기본 문법

switch (expression) {
  case value1:
    //Statements executed when the
    //result of expression matches value1
    [break;]
  case value2:
    //Statements executed when the
    //result of expression matches value2
    [break;]
  ...
  case valueN:
    //Statements executed when the
    //result of expression matches valueN
    [break;]
  [default:
    //Statements executed when none of
    //the values match the value of the expression
    [break;]]
}
  • switch의 파라미터로 들어온 expressioncasevalueN이 일치하면
    1. switch문 전체가 끝나거나
    2. break를 마주칠 때까지 case문 내부가 실행된다.
  • break 는 선택적으로 사용할 수 있다.
  • 하지만 break를 사용하지 않을 경우, 첫 번째로 일치한 case절 이후
    1. switch문 전체가 끝나거나
    2. 다음 break를 만날 때 까지 모든 case절이 실행된다.(조건이 맞는지와는 상관없이)
  • default절은 선택적으로 사용할 수 있다.
  • 만약 모든 casevalueNexpression과 일치하지 않으면 defalut절이 실행된다.

예제

#1

//기본형
let expr = 1;

switch (expr) {
  case 0:
    alert( '비교하려는 값보다 작습니다.' );
    break;
  case 1:
    alert( '비교하려는 값과 일치합니다.' );
    break;
  case 2:
    alert( '비교하려는 값보다 큽니다.' );
    break;
  default:
    alert( "어떤 값인지 파악이 되지 않습니다." );
}

//case 1이 실행될 것이다.

#2

//break가 생략되었을 시
let expr = 1;

switch (expr) {
  case 0:
    alert( '비교하려는 값보다 작습니다.' );
    break;
  case 1:
    alert( '비교하려는 값과 일치합니다.' );
    //case 1의 break를 삭제합니다.
  case 2:
    alert( '비교하려는 값보다 큽니다.' );
    //case 2의 break를 삭제합니다.
  default:
    alert( "어떤 값인지 파악이 되지 않습니다." );
}

//case 1 이후로 break문을 만나거나 switch문이 끝날 때까지 모두 실행되므로
//case 1과 case 2, default 절이 실행될 것이다.

#3

//case들을 묶고 싶을 경우
let expr = 1;

switch (expr) {
  case 0:
    alert( '비교하려는 값보다 작습니다.' );
    break;
  case 1:
	//case 1의 실행문을 삭제합니다.
  case 2:
    alert( '비교하려는 값보다 큽니다.' );
    break;
  default:
    alert( "어떤 값인지 파악이 되지 않습니다." );
}

//expr이 1이나 2일 경우
//case 1(빈 절)과 case 2가 실행될 것이다.

#4

//일치하는 case 절이 없을 경우
let expr = 1111;

switch (expr) {
  case 0:
    alert( '비교하려는 값보다 작습니다.' );
    break;
  case 1:
    alert( '비교하려는 값과 일치합니다.' );
    break;
  case 2:
    alert( '비교하려는 값보다 큽니다.' );
    break;
  default:
    alert( "어떤 값인지 파악이 되지 않습니다." );
}

//어떤 case도 expr과 일치하지 않으므로
//default 절이 실행 될 것이다.

//만약 defualut 절이 존재하지 않으면
//아무 것도 실행되지 않을 것이다.
profile
다 늦은 밤, 달밤의 개발일기

0개의 댓글