본문 바로가기
Language/Java Script

[JAVA SCRIPT] typeof 연산자의 역할은? 데이터 타입 검사의 마법과 예외적 결함 분석

by Papa Martino V 2026. 1. 27.
728x90

typeof 연산자
typeof 연산자

 

자바스크립트(JavaScript)는 동적 타이핑(Dynamic Typing) 언어입니다. 변수를 선언할 때 타입을 명시하지 않아도 엔진이 실행 시점에 타입을 결정하죠. 이러한 유연함은 빠른 개발을 돕지만, 대규모 프로젝트에서는 예기치 못한 타입 오류를 발생시키는 원인이 되기도 합니다. 이때 개발자의 가장 강력한 방패가 되어주는 것이 바로 typeof 연산자입니다. 오늘날 현대적 자바스크립트 환경에서 이 연산자가 왜 중요한지, 그리고 우리가 주의해야 할 '역사적 유산'은 무엇인지 심층적으로 살펴보겠습니다.

1. typeof 연산자의 기본 역할: 런타임 타입 식별

typeof 연산자는 피연산자의 데이터 타입을 평가하여 문자열(String) 형태로 반환하는 단항 연산자입니다. 코드 실행 중에 변수에 담긴 데이터가 숫자인지, 문자열인지, 혹은 정의되지 않았는지를 확인하여 로직의 분기점을 만드는 데 필수적인 역할을 합니다.


2. typeof 반환 값의 체계적 비교

자바스크립트의 각 데이터 타입에 대해 typeof가 어떤 결과를 내놓는지 명확히 이해하는 것이 중요합니다.

피연산자 유형 반환 결과 (문자열) 비고 및 특이사항
미선언 변수 / undefined "undefined" 안전한 존재 여부 확인 가능
숫자 (10, 3.14, NaN) "number" NaN도 숫자로 취급됨에 주의
문자열 ("Hello") "string" 빈 문자열("")도 포함
논리값 (true, false) "boolean" -
함수 (function) "function" 객체의 일종이나 고유 결과 반환
객체 ({}, []) "object" 배열(Array)도 객체로 분류됨
Null (null) "object" 자바스크립트의 유명한 설계 결함
Symbol / BigInt "symbol" / "bigint" ES6 및 ES2020 추가 타입

3. 전문가의 시선: typeof 사용 시 주의해야 할 3가지 포인트

첫째, Null 검사의 함정

자바스크립트 초기 설계 당시의 오류로 인해 typeof null"object"를 반환합니다. 따라서 특정 변수가 정말 객체인지 확인하려면 다음과 같이 교차 검증이 필요합니다.

둘째, 배열(Array) 식별의 한계

배열 역시 typeof"object"를 반환합니다. 배열을 정확히 판별하기 위해서는 ES6에서 도입된 Array.isArray() 메서드를 사용하는 것이 표준입니다.

셋째, 선언되지 않은 변수에 대한 관용

일반적으로 선언되지 않은 변수를 참조하면 ReferenceError가 발생하지만, typeof 연산자는 오류 없이 "undefined"를 반환합니다. 이는 특정 라이브러리가 로드되었는지 안전하게 확인하는 용도로 요긴하게 쓰입니다.


4. Sample Example: 실전 타입 가드(Type Guard) 구현

실제 애플리케이션에서 typeof를 활용해 안정적인 코드를 작성하는 예시입니다.


/**
 * 사용자 입력을 처리하는 안전한 계산 함수
 */
function safeMultiply(a, b) {
    // 1. 타입 가드를 통한 방어적 프로그래밍
    if (typeof a !== "number" || typeof b !== "number") {
        return "오류: 두 인자 모두 숫자여야 합니다.";
    }

    // 2. NaN 체크 (NaN의 typeof도 'number'이기 때문)
    if (Number.isNaN(a) || Number.isNaN(b)) {
        return "오류: 유효한 숫자가 아닙니다.";
    }

    return a * b;
}

console.log(safeMultiply(10, 5));     // 50
console.log(safeMultiply(10, "5"));   // 오류 메시지 출력
console.log(safeMultiply(undefined)); // 오류 메시지 출력

5. 결론: 타입 검사의 첫걸음

typeof 연산자는 자바스크립트 개발자에게 가장 친숙하면서도 동시에 가장 오해받기 쉬운 도구입니다. null에 대한 반환 오류나 배열 식별의 한계 등을 명확히 인지하고 사용한다면, 보다 견고하고 오류 없는 코드를 작성할 수 있습니다. 동적 언어의 자유로움을 누리되, 그 이면의 타입을 통제하는 힘을 기르시길 바랍니다.

레퍼런스 및 데이터 출처

1. Mozilla Developer Network (MDN) - typeof operator documentation (2025 Revised)
2. "You Don't Know JS Yet" - Types & Grammar by Kyle Simpson
3. ECMA-262, 14th edition (ECMAScript 2023) Specification

728x90