[JavaScript 기본] 조건문 정리

2025. 10. 29. 16:44·React/JavaScript 기본

조건 분기는 코드 흐름 컨트롤의 핵심

`if ~ else if ~ else`와 `switch`의 차이, 주의점을 정리함


1. `if 문`

let num = 10;

if (num >= 3) {
  console.log("num은 3 이상입니다.");
} else if (num >= 5) {
  console.log("num은 5 이상입니다.");
} else if (num >= 10) {
  console.log("num은 10 이상입니다.");
} else {
  console.log("해당 사항이 없습니다");
}
  • 위에서부터 첫 번째로 참인 분기만 실행되고 나머지는 스킵됨.
  • 조건 순서 중요 : 범위가 넓은 조건을 먼저 쓰면 아래 분기가 절대 실행 안됨.
  • 블록 `{ }` 생략 가능하지만 버그 방지용으로 항상 쓰는 것을 권장

truthy / falsy 체크도 자주 씀

// falsy: false, 0, "", null, undefined, NaN
const title = "";
if (!title) {
  console.log("제목이 비어있음"); // 빈 문자열도 falsy
}

`Guard`패턴 : 초기에 빨리 리턴

function buy(price) {
  if (price <= 0) return;        // 잘못된 입력 가드
  // 정상 로직
}

2. `switch` 문

let animal = "bear";

switch (animal) {
  case "cat": {
    console.log("고양이");
    break; // ⚠️ break 없으면 아래로 '떨어짐'(fall-through)
  }
  case "dog": {
    console.log("강아지");
    break;
  }
  case "bear": {
    console.log("곰");
    break;
  }
  case "snake": {
    console.log("뱀");
    break;
  }
  default: {
    console.log("그런 동물은 없습니다");
  }
}
  • `switch`는 엄격 동등 비교(===) 로 케이스 매칭함
    ->`"1"`과 `1`은 다름
  • `break`없으면 fall-through 발생! (아래 case까지 연쇄 실행)
    -> 일부러 묶고 싶을 땐 의도적으로 생략
  • `defalut`는 선택적. 보통 맨 마지막에 둠

여러 케이스를 하나로 묶기

const key = "y";

switch (key) {
  case "y":
  case "Y":
    console.log("Yes");
    break;
  case "n":
  case "N":
    console.log("No");
    break;
  default:
    console.log("Unknown");
}

범위 조건은 `switch(true)` 트릭

const score = 87;

switch (true) {
  case score >= 90:
    console.log("A");
    break;
  case score >= 80:
    console.log("B");
    break;
  case score >= 70:
    console.log("C");
    break;
  default:
    console.log("D");
}

case 안에서 변수 선언시 스코프 주의

  • `switch`는 전체가 하나의 스코프라 중복 선언 에러가 생길 수 있음
    -> 중괄호로 감싸서 블록 스코프 생성 권장
switch (animal) {
  case "cat": {
    const sound = "야옹";
    console.log(sound);
    break;
  }
  case "dog": {
    const sound = "멍멍"; // 별도 블록이라 중복 선언 문제 없음
    console.log(sound);
    break;
  }
}

 


3. `if` vs `switch`, 언제 씀?

상황 추천
범위/부등식 (>=, <= 등) `if`
값 일치 다수 분기 (문자/상수 매칭) `switch`
간단한 2분기 삼항(조건 ? A : B) 또는 `if`
초기 검증/빠른 종료 `if` 가드 패턴

가독성 기준으로 선택하면 될듯?


4. 샘플 코드

// 1) if: 순서가 중요한 범위 분기
const num = 10;
if (num >= 5) {
  console.log("5 이상");
} else if (num >= 10) {
  console.log("10 이상");
} else {
  console.log("기타");
}

// 2) switch: 값 일치 분기
const animal = "bear";
switch (animal) {
  case "cat": console.log("고양이"); break;
  case "dog": console.log("강아지"); break;
  case "bear": console.log("곰"); break;
  default: console.log("없음");
}

// 3) switch(true): 점수 등급
const score = 87;
switch (true) {
  case score >= 90: console.log("A"); break;
  case score >= 80: console.log("B"); break;
  case score >= 70: console.log("C"); break;
  default: console.log("D");
}

// 4) truthy/falsy 체크
const title = "";
if (!title) console.log("제목 비어있음");

// 5) 가드 패턴
function pay(amount) {
  if (amount <= 0) return; // 가드
  console.log("결제 진행");
}

 

'React > JavaScript 기본' 카테고리의 다른 글

[JavaScript 기본] 함수 정리  (0) 2025.10.29
[JavaScript 기본] 반복문  (0) 2025.10.29
[JavaScript 기본] 연산자 정리  (0) 2025.10.29
[JavaScript 기본] 형 변환 (Type Casting) 정리  (0) 2025.10.28
[JavaScript 기본] 자료형(원시 타입) 정리  (0) 2025.10.28
'React/JavaScript 기본' 카테고리의 다른 글
  • [JavaScript 기본] 함수 정리
  • [JavaScript 기본] 반복문
  • [JavaScript 기본] 연산자 정리
  • [JavaScript 기본] 형 변환 (Type Casting) 정리
이도서
이도서
  • 이도서
    도서의 코딩노트
    이도서
  • 전체
    오늘
    어제
    • 분류 전체보기 (249)
      • Today I Learned (79)
        • 2024 (78)
      • Swift (25)
        • Swift 문법 정리 (19)
        • RxSwift (5)
      • Swift Study (12)
        • Playground (2)
        • Storyboard (9)
        • UIKit (1)
      • Flutter (27)
        • Dart 언어 (16)
        • Flutter Study (11)
      • React (37)
        • HTML & CSS (8)
        • JavaScript 기본 (12)
        • JavaScript 심화 (14)
        • Node.js (2)
        • React (1)
      • Git (3)
      • 코딩테스트 (60)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

    • 개발 공부 공유 링크
  • 인기 글

  • 태그

    DART
    ios앱개발자
    iOS앱개발
    html
    코딩테스트
    코딩테스트 level.1
    객체지향
    함수
    내일배움캠프
    javascript 기본
    javascript
    Swift
    storyboard
    Til
    Flutter
    ios
    function
    CLASS
    코딩테스트Level.1
    React
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
이도서
[JavaScript 기본] 조건문 정리
상단으로

티스토리툴바