본문 바로가기

웹 개발/Javascript

[Javascript] 자바스크립트 타입 감지

728x90
  • 때때로 변수들의 타입을 감지할 필요가 있다.
  • 간혹 변수 타입을 이용한 조건문으로 돔의 조작이 필요하다거나 하는 등. 그럴 때는 아래의 연산자를 쓰면 된다.

typeof

  • typeof는 변수의 타입을 대체적으로 감지해주는 연산자이다.
  • 이 연산자를 쓰면 변수의 타입을 감지하여 해당 변수의 자료형을 문자열로 반환해주는 역할을 한다. 아래의 예시를 보자.
var a = ''; // 문자열
var b = []; // 배열
var c = {}; // 객체
var d = 0; // 숫자

typeof a // result -> 'string'
typeof b // result -> 'object'
typeof c // result -> 'object'
typeof d // result -> 'number'
  • 이처럼 변수의 타입 즉, 자료형을 문자열로 반환하여 출력해준다. 이것을 조건문에 응용하여 다룰수도 있다.
  • 그런데, 분명 배열과 객체를 구분하여 선언한 b와 c를 같은 'object'로 반환하였다.
  • typeof는 이 두 자료형을 따로 구분하지 못하고 'object'타입으로 모두 구분하기 때문에 다른 방법을 써야한다.

constructor

  • constructor는 typeof와 다르게 해당 변수의 자료형을 정확하게 구분해준다.
  • 즉, 자료형의 prototype을 구분하는 속성이다. 때문에 typeof연산자와는 쓰임이 다르다.
  • typeof는 typeof [parameter name]으로 하여 출력을 볼 수 있는 반면,
    constructor는 [parameter name].constructor === TYPE 으로 해당 자료형을 논리적으로 출력해준다. 아래의 예시를 보자.
var a = ''; // 문자열
var b = []; // 배열
var c = {}; // 객체
var d = 0; // 숫자

a.constructor === String // result -> true
b.constructor === Array // result -> true
c.constructor === Object // result -> true
d.constructor === Number // result -> true

이런식으로 사용하면 된다. 또한 클래스로 하여금 적용할 수도 있으며, 쓰임새는 다양하다.

728x90