Home 자료형 확인하기
Post
Cancel

자료형 확인하기

자료형 확인하기


자바스크립트에서 자료형을 확인하는 방법은 다양하게 있습니다. 그중에서 많이 사용되는 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를 반환 합니다.


정리

  1. typeof는 특정 원시 자료형을 확인하거나, 원시 자료형과 객체형을 구분하기 위해 사용하는 것이 좋습니다.
  2. 어떤 종류의 객체인지 확인 하고 싶으면 instanceof를 사용하는것이 좋습니다.
This post is licensed under CC BY 4.0 by the author.