Front/JS & jQuery

[js/JAVA] switch 차이

오선지♬ 2025. 8. 27. 09:05
728x90
반응형

JavaScript와 Java의 switch는 비슷해 보이지만, 동작 방식과 타입 처리에서 꽤 큰 차이가 있습니다.

 

1️⃣ 타입 비교 방식

특징 Java JavaScript
타입 엄격성 엄격함 (String, int 등 정확히 맞아야 함) 느슨함 (== 대신 === 쓰지 않으면 타입 변환 가능)
예시 switch(1)에서 case "1":는 매칭 안됨 switch(1)에서 case "1":도 동작 가능 (느슨 비교)

Java: 타입이 안 맞으면 절대 매칭 안 됨.
JS: 타입이 맞지 않아도 느슨 비교에 따라 동작할 수 있음 (== 사용 시).


2️⃣ break 문 처리

Java:

switch(x) {
    case 1: System.out.println("1"); 
    case 2: System.out.println("2"); // fall-through 발생!
}
 
  • break가 없으면 다음 case까지 실행 (fall-through)
  • 보통 의도적으로 사용하거나, 실수 방지 위해 항상 break 추가

JS:

switch(x) {
    case 1: console.log("1");
    case 2: console.log("2"); // 마찬가지로 fall-through 발생
}
 
  • 동작 방식 동일하지만, JS에서는 의도적으로 연속 실행하는 경우가 많음

3️⃣ default 처리

  • Java: 반드시 default가 없어도 되지만, return 타입 있는 메서드에서는 모든 경로에서 리턴 보장 필요 → default 없으면 컴파일 에러 가능
  • JS: default 없어도 런타임 문제 없음. 단 그냥 아무 일도 안 일어남

4️⃣ 값 범위, 표현식

  • Java: case 값은 컴파일 시점에 결정 가능한 상수여야 함 (final int, enum 등)
  • JS: case 값은 런타임 표현식 가능 (case 1+2:)

즉 요약하면:

Java는 타입과 리턴이 엄격하고, case 값이 상수여야 하며, default는 모든 코드 경로에서 return 보장을 위해 필요할 수 있음.
JS는 유연하고 타입 느슨, default 없어도 런타임 오류는 없으며, case 값에 표현식도 가능.

728x90
반응형