본문 바로가기

프로그래밍 언어/자바스크립트

자바스크립트 typeof instanceof 연산자 데이터 타입 확인

자바스크립트 typeof instanceof 연산자 데이터 타입 확인

자바스크립트는 동적 타이핑 언어로, 변수의 타입이 실행 시간에 결정됩니다. 이로 인해 때때로 변수의 타입을 확인하고 제어할 필요가 있습니다. typeofinstanceof는 자바스크립트에서 타입을 확인하는 주요 연산자입니다. 이 글에서는 이 두 연산자의 기본 사용법과 차이점을 살펴보고, 실전 예제를 통해 활용 방법을 알아보겠습니다.

 

 

 

1. typeof 연산자

typeof 연산자는 피연산자의 타입을 문자열 형태로 반환합니다. 다음은 typeof 연산자의 기본 사용법입니다.

console.log(typeof 42);            // "number"
console.log(typeof 'hello');       // "string"
console.log(typeof true);          // "boolean"
console.log(typeof {});            // "object"
console.log(typeof undefined);     // "undefined"
console.log(typeof null);          // "object" (자바스크립트의 버그)
console.log(typeof function(){});  // "function"

 

 

2. instanceof 연산자

instanceof 연산자는 객체가 특정 생성자의 인스턴스인지 여부를 확인합니다. 다음은 instanceof 연산자의 기본 사용법입니다.

let arr = [1, 2, 3];
console.log(arr instanceof Array);      // true
console.log(arr instanceof Object);     // true
console.log(arr instanceof RegExp);     // false

let date = new Date();
console.log(date instanceof Date);      // true
console.log(date instanceof Object);    // true

 

 

3. typeof와 instanceof의 차이점

typeof 연산자는 원시 타입(숫자, 문자열, 불리언 등)과 함수의 타입을 확인하는 데 유용합니다. 반면, instanceof 연산자는 객체가 특정 클래스의 인스턴스인지 여부를 확인하는 데 사용됩니다. 특히 typeof는 원시 타입을 확인하는 데 사용되고, instanceof는 객체 타입을 확인하는 데 더 적합합니다.

typeofinstanceof의 주요 차이점을 다음과 같이 정리할 수 있습니다:

  • typeof: 원시 타입과 함수의 타입을 문자열로 반환합니다.
  • instanceof: 객체가 특정 생성자의 인스턴스인지 여부를 확인합니다.

 

 

 

4. 실전 예제

타입에 따른 함수 동작

함수에서 입력된 인자의 타입에 따라 다른 동작을 수행하도록 만들 수 있습니다.

function process(value) {
    if (typeof value === 'string') {
        console.log('문자열 처리:', value);
    } else if (typeof value === 'number') {
        console.log('숫자 처리:', value);
    } else if (value instanceof Array) {
        console.log('배열 처리:', value);
    } else {
        console.log('기타 타입 처리:', value);
    }
}

process('hello');    // 문자열 처리: hello
process(42);         // 숫자 처리: 42
process([1, 2, 3]);  // 배열 처리: 1,2,3

객체 타입 확인

객체의 타입을 확인하여 클래스별로 다른 동작을 수행할 수 있습니다.

class Animal {
    constructor(name) {
        this.name = name;
    }
}

class Dog extends Animal {
    bark() {
        console.log('Woof!');
    }
}

let myDog = new Dog('Rex');

if (myDog instanceof Dog) {
    myDog.bark();  // Woof!
} else {
    console.log('This is not a dog.');
}

 

 

5. 결론

자바스크립트에서 typeofinstanceof 연산자는 데이터 타입을 확인하고 제어하는 데 매우 유용합니다. typeof는 원시 타입과 함수 타입을 확인하는 데 적합하고, instanceof는 객체가 특정 클래스의 인스턴스인지 확인하는 데 사용됩니다. 이 두 연산자를 적절히 활용하면 코드의 안정성과 가독성을 높일 수 있습니다.