자료형 확인하기
자바스크립트에서 자료형을 확인하는 방법은 다양하게 있습니다. 그중에서 많이 사용되는 typeof, instanceof를 어떻게 사용하는지 알아보겠습니다.
type of
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
let str = 'javascript'
let strObj = new String('JavaScript');
let num = 100;
let numObj = new Number(200);
let isTrue = true;
let isFalse = new Boolean(false);
const func = function(){};
const arr = [1,2,3];
const obj = {a : 'a'};
const isNull = null;
const isUnde = undefined;
console.log(typeof str === 'string') <-- 실행결과 true
console.log(typeof strObj === 'object') <-- 실행결과 true
console.log(typeof num === 'number') <-- 실행결과 true
console.log(typeof numObj === 'object') <-- 실행결과 true
console.log(typeof isTrue === 'boolean') <-- 실행결과 true
console.log(typeof isFalse === 'object') <-- 실행결과 true
console.log(typeof func === 'function') <-- 실행결과 true
console.log(typeof arr === 'object') <-- 실행결과 true
console.log(typeof obj === 'object') <-- 실행결과 true
console.log(typeof isNull === 'object') <-- 실행결과 true
console.log(typeof isUnde === 'undefined') <-- 실행결과 true
- typeof를 통해 자료형을 확인하면 원시 자료형의 값 문자형, 숫자형, 불린형, undefined는 예상한 그대로 true로 출력이 됩니다.
- 반대로 내장 객체인 String, Number, Boolean, Function과 원시 자료형의 null 일 때는 object 문자열을 반환 합니다.
instance of
1
2
3
4
5
6
7
8
9
10
11
12
13
console.log(str instanceof String) <-- 실행결과 false
console.log(strObj instanceof String) <-- 실행결과 true
console.log(num instanceof Number) <-- 실행결과 false
console.log(numObj instanceof Number) <-- 실행결과 true
console.log(isTrue instanceof Boolean) <-- 실행결과 false
console.log(isFalse instanceof Boolean) <-- 실행결과 true
console.log(arr instanceof Array) <-- 실행결과 true
console.log(obj instanceof Object) <-- 실행결과 true
console.log(func instanceof Function) <-- 실행결과 true
console.log(isNull instanceof Objcet) <-- 실행결과 true
console.log(isUnde instanceof undefined)
<-- 실행결과 ReferenceError: Objcet is not defined
- 원시 타입에 대한 결과는 false를 반환하고, 내장 객체로 선언된 변수는 true를 반환합니다.
- 객체, 배열, 함수는 각각 Objcect를 상속받은 내장 객체이므로 true를 반환합니다.
- Null은 Object를 상속받은 객체가 아닙니다. typeof 에서는 ojbect를 반환 했지만 instanceof 에서는 false를 반환하여 객체가 아님을 확인 할 수 있습니다.
- undefined는 객체가 아니기 때문에 ReferenceError를 반환 합니다.
정리
- typeof는 특정 원시 자료형을 확인하거나, 원시 자료형과 객체형을 구분하기 위해 사용하는 것이 좋습니다.
- 어떤 종류의 객체인지 확인 하고 싶으면 instanceof를 사용하는것이 좋습니다.