자바스크립트에서 변수의 타입을 체크하는 방법은 여러 가지가 있습니다. 이번에는 그 중에서도 자주 사용되는 방법들에 대해 알아보겠습니다.

1. typeof 연산자

가장 기본적인 타입 체크 방법은 typeof 연산자를 사용하는 것입니다. 이 연산자는 인자의 데이터 타입을 문자열로 반환합니다. 예를 들어, 다음과 같이 사용합니다.

typeof 42; // "number"
typeof "hello"; // "string"
typeof true; // "boolean"
typeof undefined; // "undefined"
typeof null; // "object"

위와 같이 사용할 수 있습니다. 그러나 이 연산자는 null에 대해 object로 반환하고(설계 오류), array에 대해서는 object라고 반환하기 때문에 주의해서 사용해야 합니다.

2. instanceof 연산자

instanceof 연산자는 객체의 생성자 함수를 비교하여 타입 체크를 합니다. 이 연산자는 상속 체인까지 확인하여 타입 체크를 합니다. 예를 들어, 다음과 같이 사용합니다.

var arr = [1, 2, 3];
var obj = { name: "John", age: 30 };

arr instanceof Array; // true
obj instanceof Object; // true

위와 같이 사용할 수 있습니다. 이 연산자는 객체에 대해서만 사용할 수 있기 때문에, 원시 타입에 대해서는 사용할 수 없습니다.

3. Object.prototype.toString.call 함수

Object.prototype.toString.call 함수는 객체의 타입을 문자열로 반환합니다. 이 함수는 원하는 변수의 타입을 확인하기 위해 call 메소드를 활용하여 사용합니다. 예를 들어, 다음과 같이 사용합니다.

Object.prototype.toString.call(42); // "[object Number]"
Object.prototype.toString.call("hello"); // "[object String]"
Object.prototype.toString.call(true); // "[object Boolean]"
Object.prototype.toString.call(undefined); // "[object Undefined]"
Object.prototype.toString.call(null); // "[object Null]"

위와 같이 사용할 수 있습니다. 이 방법은 모든 타입에 대해서 체크할 수 있기 때문에, 가장 정확한 타입 체크 방법 중 하나입니다.

요약

자바스크립트에서 타입을 체크하는 방법은 여러 가지가 있습니다. 이번 문서에서는 자주 사용되는 방법들에 대해서 알아보았습니다. 타입 체크 방법 중에서는 Object.prototype.toString.call 함수를 사용하는 것이 가장 정확한 방법 중 하나입니다. 그러나 typeof 연산자는 가장 기본적인 방법이기 때문에, 처음 배울 때는 이 방법을 먼저 익히는 것이 좋습니다.

위 방법들을 사용하여 아래처럼 실무에서 사용할 수 있습니다.

function typeCheck(value) {
    const return_value = Object.prototype.toString.call(value);
    const type = return_value.substring(
        return_value.indexOf(" ") + 1,
        return_value.indexOf("]")
    );
    return type.toLowerCase();
}

typeof(value) === 'number'
typeCheck(value) === 'number'
isNaN(value) // value '', ' ', '1', '2', '3'이 false이고 'a', 'b', 'c' true입니다.
arr.constructor === Array
arr instanceof Array