Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript switch 문은 엄격한 비교를 사용할까? 안전하게 가정해도 되는 이유

JavaScript의 switch 문이 값과 자료형을 어떤 방식으로 비교하는지 헷갈리는 경우가 많습니다. 결론부터 말하면, switch 문은 내부적으로 엄격한 비교(strict equality, ===)를 사용하므로 자료형까지 일치하는 case에만 매칭됩니다.

직접 눈으로 확인하고 싶다면 아래 코드를 브라우저 콘솔이나 HTML 파일에서 실행해 보세요.

예제 코드

switch(1) {
    case '1':
        alert('Switch comparison: Not Strict.');
        break;
    case 1:
        alert('Switch comparison: Strict.');
        break;
    default:
        alert('Default');
}

실행 결과

위 코드를 실행하면 'Switch comparison: Strict.'라는 알림창이 나타납니다.

왜 이런 결과가 나올까?

switch 문에 전달된 값은 숫자 1입니다. 첫 번째 case인 '1'문자열이므로, 엄격한 비교 1 === '1'은 자료형이 다르기 때문에 false가 됩니다. 반면 두 번째 case인 1은 값과 자료형이 모두 일치하므로 해당 블록이 실행되는 것입니다.

만약 switch 문이 느슨한 비교(==)를 사용했다면, '1'이 먼저 매칭되어 'Not Strict' 메시지가 출력되었을 것입니다.

정리

JavaScript의 switch 문은 항상 엄격한 비교(===)를 수행하며, 느슨한 비교(==)처럼 암묵적인 타입 변환을 일으키지 않습니다. 따라서 switch 문에서 엄격한 비교를 가정하는 것은 완전히 안전하며, 이를 활용하면 의도치 않은 타입 변환으로 인한 버그를 예방할 수 있습니다.