typeof 연산자란?
typeof 연산자는 자바스크립트에서 피연산자의 데이터 타입을 문자열로 반환하는 단항 연산자(unary operator)입니다. 연산자는 단 하나의 피연산자 바로 앞에 위치하며, 이 피연산자는 숫자, 문자열, 객체 등 어떤 타입이든 될 수 있습니다. typeof 연산자는 피연산자가 숫자면 "number", 문자열이면 "string", 불리언이면 "boolean"을 평가 결과로 반환하며, 이를 통해 해당 값의 데이터 타입을 손쉽게 확인할 수 있습니다.
변수의 타입을 런타임에 검사해야 하는 상황에서 typeof는 가장 기본적이면서도 널리 사용되는 도구입니다.
typeof 연산자의 반환값 목록
다음 표는 typeof 연산자가 각 데이터 타입에 대해 반환하는 문자열 값을 정리한 것입니다.
| 데이터 타입 | typeof가 반환하는 문자열 |
|---|---|
| 숫자(Number) | "number" |
| 문자열(String) | "string" |
| 불리언(Boolean) | "boolean" |
| 객체(Object) | "object" |
| 함수(Function) | "function" |
| 정의되지 않음(Undefined) | "undefined" |
| 널(Null) | "object" |
특히 주목할 부분은 null의 typeof 결과가 "object"로 반환된다는 점입니다. 이는 자바스크립트 초창기 구현부터 이어져 온 잘 알려진 역사적 특수 사례로, 하위 호환성을 유지하기 위해 지금까지 그대로 남아 있습니다. 따라서 null 여부를 정확히 판별하려면 typeof 대신 일치 연산자(===)를 사용하는 것이 안전합니다.
사용 예제
다음 코드는 typeof 연산자를 실제로 구현하고 활용하는 방법을 보여줍니다.
<html>
<body>
<script>
var a = 10;
var b = "String";
var linebreak = "<br />";
result = (typeof b == "string" ? "B is String" : "B is Numeric");
document.write("Result => ");
document.write(result);
document.write(linebreak);
result = (typeof a == "string" ? "A is String" : "A is Numeric");
document.write("Result => ");
document.write(result);
document.write(linebreak);
</script>
</body>
</html>실행 결과
Result => B is String
Result => A is Numeric
위 예제에서 변수 b는 문자열이므로 typeof b == "string" 조건이 참이 되어 "B is String"이 출력되고, 변수 a는 숫자이므로 같은 조건이 거짓이 되어 "A is Numeric"이 출력됩니다. 이처럼 typeof 연산자는 삼항 연산자나 if 문 같은 조건문과 함께 사용하여, 변수의 타입에 따라 서로 다른 로직을 실행해야 할 때 매우 유용하게 활용됩니다.