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
반응형
'Front > JS & jQuery' 카테고리의 다른 글
[js] String.prototype (0) | 2025.09.03 |
---|---|
[js] pignoseCalendar 바인딩 (0) | 2025.09.01 |
[js] PDF 파일(blob 데이터)을 새창에서 보여줄 때, URL 수정하기 (0) | 2025.08.26 |
[js] blob 데이터를 보여주는 방식 (새창열기, 현재페이지에 보여주기) (0) | 2025.08.25 |
[jQuery] multiselect readonly (0) | 2025.08.18 |