[JS] 3. Condition




1. 조건문 if-else

let apple = 20;

if (apple >= 20) {
  console.log("very expensive");
} else if (apple < 5) {
  console.log("very cheap");
} else {
  console.log("nice");
}

console.log("done");
  • 알고리즘에서 논리적 비교를 할 때 사용되는 조건식
  • if, else if, else 키워드를 통해 구성되며, 조건식에 맞을 경우 중괄호 {} 내에 있는 명령문을 수행
  • 단, 실행 문장이 단일 문장일 경우에는 {} 생략 가능


삼항 연산자

let apple = 10;

msg = apple > 20 ? "very expensive" : "nice";

console.log(msg);
  • if-else를 대체하여 사용 가능
  • 변수 = (조건식) ? 참일 때 값 : 거짓일 때 값



2. 조건문 switch

let day_number = 1;
let day = "";

switch (day_number) {
  case 0:
    day = "Sunday";
    break;
  case 1:
    day = "Monday";
    break;
  case 2:
    day = "TuesDay";
    break;
  case 3:
    day = "Wednesday";
    break;
  case 4:
    day = "Thursday";
    break;
  case 5:
    day = "Friday";
    break;
  case 6:
    day = "Saturday";
    break;
  default:
    day = "error";
    break;
}

console.log(day)
let browser = "Chrome";
let msg = "";

switch (browser) {
  case "Explorer":
    msg = "ActiveX installation required";
    break;
  //  braek 안걸리면 쭉 내려간다.
  // 변경, 라인에 대한 최소화 가능
  case "Chrome":
  case "Firefox":
  case "Safari":
  case "Opera":
    msg = "Supported browsers";
    break;
  default:
    msg = "Unsupported browsers";
    break;
}

console.log(msg);
  • 표현식을 평가하여 그 값이 일치하는 case 문을 실행하는 조건문
  • switch, case, break, default 키워드를 통해 구성되며, switch의 조건에 맞는 case 구문을 수행
  • 일반적으로 하나의 case만 수행되도록 case 끝을 break로 끝맺음



3. 연습문제

  • 조건문 switch를 이용하여 1~7 사이의 숫자를 입력 받으면 요일을 출력해주는 코드를 작성하시오
  • 1(월요일) ~ 7(일요일)로 맵핑된다
const day = 3;
let weekend = "";

switch (day) {
  // 구현하기
  case 1:
    weekend = "월요일";
    break;
  case 2:
    weekend = "화요일";
    break;
  case 3:
    weekend = "수요일";
    break;
  case 4:
    weekend = "목요일";
    break;
  case 5:
    weekend = "금요일";
    break;
  case 6:
    weekend = "토요일";
    break;
  case 7:
    weekend = "일요일";
    break;
  default:
    weekend = "잘못 입력하셨습니다.";
    break;
}

console.log(weekend); // output : 수요일



나의 회고 🤫

if-elseif 구문과 switch-case 구문의 성능 차이가 궁금해져서 알아보았다.
정답은 switch-case 문에서도 해당 경우일 때 바로 return 만 시켜준다면 실행 속도는 거의 비슷하다는 것!
하지만 나의 예제처럼 변수에 값을 할당하고 마지막에 출력해주는 형태라면 if-else 구문의 실행 속도가 아주 미세하게 더 빨랐다.
따라서 switch-case 문의 실행속도를 높이기 위해선 바로 리턴하도록 하는 것이 좋을 것 같다.
근데 그러면 return 변수; 문장의 중복이 발생할텐데 클린코드 관점에서는 별로일 것 같고,,, 조율해봐야 하는 문제일 것 같다.
(나라면 실행속도를 조금 뒤로 미루고 깔끔한 코드를 선택할 것 같다… 차이가 아주 미세하니까!)

  • switch-case가 점프 테이블로 구성되어서 더 최적화가 좋다느니, 변수 3개까지는 if 가 더 좋다느니 아직 말이 많은 부분인 것 같긴 하다
  • 어쨋든 전체 프로그램 성능에 엄청 큰 영향을 끼치진 않으니 의미적으로 더 좋은 조건문을 선택할 것!