JavaScript의 switch-case 문은 기본적으로 대소문자를 엄격하게 구분합니다. 따라서 'amit'과 'AMIT'은 서로 다른 값으로 처리됩니다. 대소문자 구분 없이 switch-case를 사용하고 싶다면, 비교하기 전에 입력값을 모두 대문자 또는 모두 소문자로 통일하는 것이 가장 간단하고 효과적인 방법입니다.
핵심 원리
문자열 메서드인 toUpperCase() 또는 toLowerCase()를 사용해 switch 문에 전달되는 값을 미리 정규화하면, case 라벨도 동일한 형식으로 작성했을 때 어떤 대소문자 조합이 들어와도 일관되게 매칭됩니다.
예제 코드
아래 예제는 입력 문자열을 대문자로 변환한 후 switch 문으로 처리하는 방법을 보여줍니다.
<!DOCTYPE html>
<html>
<body>
<h3>JavaScript Strings</h3>
<p id="test"></p>
<script>
var str = "amit";
str = str.toUpperCase();
switch (str) {
case 'AMIT': document.write("The name is AMIT <br>");
break;
case 'JOHN': document.write("The name is JOHN <br>");
break;
default: document.write("Unknown name<br>")
}
document.write("Exiting switch block");
</script>
</body>
</html>코드 설명
위 코드의 동작 순서는 다음과 같습니다.
1. 변수 str에 소문자 문자열 "amit"이 저장됩니다.
2. toUpperCase() 메서드를 호출하여 문자열이 "AMIT"으로 변환됩니다.
3. switch 문은 대문자로 통일된 값과 case 라벨('AMIT', 'JOHN')을 비교합니다.
4. 일치하는 case가 실행되어 화면에 "The name is AMIT"이 출력된 후, break 문으로 switch 블록을 빠져나갑니다.
참고 사항
만약 사용자 입력처럼 값이 확실하지 않은 경우에는 String()으로 형변환한 뒤 대소문자를 정규화하는 것이 안전합니다. 또한 최신 JavaScript 환경에서는 document.write() 대신 textContent나 innerHTML을 사용해 DOM에 결과를 출력하는 것이 권장됩니다.