Javascript - typeof 연산자 사용법을 알아보자

 자바스크립트는 변수 타입을 문자로 반환하는 함수인 typeof 연산자를 제공합니다. typeof 연산자는 undefined, null, boolean, number, string, symbol, object, function의 자바스크립트가 가진 7가지 변수 타입을 구분하는 용도로 사용합니다.

문법

typeof operand
typeof(operand)

 typeof 연산자는 타입을 확인해야 하는 피연산자 앞에 위치합니다. typeof는 연산자이므로 함수처럼 괄호[()]를 사용할 필요가 없습니다. 즉 피연산자의 타입을 확인할 때는 typeof(operand)가 아니라 typeof operand를 사용하는 것이 맞습니다. typeof(operand)도 사용 가능한 문법이지만, 불필요한 괄호[()]를 넣은 사용방법이니 추천드리지는 않습니다.

매개변수

operand

: 리터럴 또는 표현식

사용법

표현식 반환값
typeof undefined "undefined"
typeof null "object"
typeof true "boolean"
typeof 1 "number"
typeof '' "string"
typeof Symbol() "symbol"
typeof function() {} "function"
typeof {} "object"

 위에서 제시한 사용법을 console.log를 사용해 결과를 출력하면 다음과 같은 결과를 확인할 수 있습니다.

console.log(typeof undeclaredVariable);
// 출력 결과: "undefined"

console.log(typeof null);
// 출력 결과: "object"

console.log(typeof true);
// 출력 결과: "boolean"

console.log(typeof 27);
// 출력 결과: "number"

console.log(typeof 'YD');
// 출력 결과: "string"

console.log(typeof Symbol());
// 출력 결과: "symbol"

console.log(typeof function() {});
// 출력 결과: "function"

console.log(typeof {});
// 출력 결과: "object"

 

 

알아두기

null은 왜 "object"인가?

 typeof 연산자는 null을 "object"라고 판단합니다. null을 "object"로 반환하는 이유는 Mozilla에서는 이와 같이 이야기합니다.

typeof가 null을 "object"로 반환하는 이유 with Mozilla

 null과 객체를 동일하게 취급하는 것은 분명 문제가 있습니다. null은 "object"가 아니라 "null"이라는 하나의 원시 타입으로 정의되어야 하는 것이 맞습니다. 이에 관련되서는 많은 논쟁이 있지만, 이미 많은 코드들이 typeof null이 "object"를 반환하는 코드를 사용하기 때문에 바꾸기는 어려운 상황입니다.

배열도 "object"로 표현된다.

typeof []
// 출력 결과: "object"

 자바스크립트는 배열(array) 자료구조를 제공하지만, typeof는 배열(array)을 구분하지 못합니다. typeof []는 "object"를 반환합니다. typeof는 배열을 식별하지 못하기 때문에 배열을 구분하기 위해서는 Array.isArray()라는 다른 함수를 사용해야 합니다. 이는 객체를 구체적으로 구분을 해야 하는 상황에서는 별도의 함수를 정의해서 사용해야 한다는 의미이기도 합니다.

반응형

댓글

Designed by JB FACTORY