switch문 & if문

EJ·2021년 3월 22일
0

if

if (조건식) {
  수행문;
}

// 블럭 안에 수행문이 하나일 경우 괄호를 생략 가능하다.
if (조건식) 수행문;

조건식이 '참'일 경우 블럭 안의 문장이 수행된다.


조건식의 결과가 반드시 true 또는 false이어야 하므로 비교연산자와 논리연산자로 구성된다.

if (조건식) {
  수행문 1;   // 조건식이 참일 경우 수행.
} else {
  수행문 2;   // 조건식이 거짓일 경우 수행.
}
// 조건연산자
(조건식) ? 결과1 : 결과2;
// 조건식이 참일경우 결과1, 거짓일 경우 결과2.



if-else

if (조건식 1) {
  수행문 1;   // 조건식 1이 참일 경우 수행.
} else if (조건식 2) {
  수행문 2;   // 조건식 2가 참일 경우 수행.
} else if (조건식 3) {
  수행문 3;   // 조건식 3이 참일 경우 수행.
} else {
  수행문 4;   // 조건식 1~3에 모두 해당하지 않을 경우 수행.
};

조건이 여러 개일 경우 if-else문으로 표현 가능하다.

첫 번째 조건부터 순서대로 평가해서 결과가 참인 조건식을 만나면 해당 블럭을 수행하고 if-else문을 벗어난다.

결과가 참인 조건식이 하나도 없으면 else블럭의 문장이 수행된다. else 블럭은 생략이 가능하다.



switch

switch (조건) {
  case1: 
    수행문1;
    break;
    
  case2: 
    수행문2;
    break;
    
  case3: 
    수행문3;
    break;
    
  default:
    수행문4;
}

경우의 수가 많아지면 if-else문 대신 switch문으로 작성하는 것이 좋다.

switch문의 조건식은 결과값이 반드시 정수(문자)이거나 문자열이어야 하며, case문의 값은 중복되면 안된다.

  1. 조건식을 계산한다.
  2. 조건식의 결과와 일치하는 case문으로 이동한다.
  3. 해당하는 문장들을 수행한다.
  4. break문을 만나면 switch문을 빠져나간다.

break문은 각 case문의 영역을 구분하는 역할을 한다.
만약 break문을 생락하면 다른 break문을 만나거나 switch문의 끝을 만날 때까지 수행된다.
case문은 여러 경우를 동시에 처리할 때 break문을 생략해 사용하기도 한다.

만약 조건식의 결과와 일치하는 case문이 없으면 default문으로 이동하게 된다. (if문의 else블럭과 같은 역할이다.)






switch와 if else 중 어떤 것을 써야할까?

switch문은 변수를 입력 받아 미리 정해놓은 여러 값들과의 일치 여부를 판단해 switch문 내의 control flow를 결정한다.

if else문은 boolean의 결과 값을 내놓은 조건문에 따라 true, false에 해당하는 각각 두 개의 흐름(control flow)으로 갈라진다.
if else문을 중첩되게 배치하면 두 개 이상의 control flow를 가질 수 있게 된다.


if else문을 사용할 수 있는 모든 상황에 switch문을 사용할 수 있는 것은 아니다.
하지만 모든 switch문은 if else문으로 대체될 수 있다.


즉, 하나의 변수를 입력받아 그 변수의 값에 따라 다른 흐름으로 이동할 수 있는 코드를 짜야할 때, switch문과 if else문 둘 다 사용될 수 있다.
둘 중 어느 것을 사용해야 더 좋을까?

코드의 최적화를 위해서 if else문보다 switch문을 사용하는 것이 적절하다.





참고

profile
주니어 프론트엔드 개발자 👼🏻

0개의 댓글