JavaScript

[JavaScript] 변수가 Function인지 확인하는 방법

코딩하는 Jay 2020. 4. 22. 05:00
반응형

JavaScript은 여러가지 특징을 가지고 있는 언어이지만 그 중 하나를 말하라고 하면 함수가 일급(first-class)객체라는 것이 아닐까 생각합니다. 함수가 일급 객체로 취급 받아 변수에 대입하거나 매개변수로 전달할 수 있습니다. 그리고 JavaScript의 경우 var 키워드를 이용하여 변수를 선언하는데, 이 var 키워드로 생성된 변수는 타입에 상관없이 대입이 가능합니다.

 

아래 소스를 보면 a라는 변수는 처음에는 정수형으로 선언되었는데, 문자열로 대입되었다가 함수로 대입되었다가 실수로 대입되었다가 객체로 그리고 배열로 대입되며 그때 그때 다른 type 변수로 사용되고 있습니다.

var a = 1;

a = 'string';

a = function() {
    console.log('Function');
};

a = 1.2;

a = {};

a = [];

 

이렇게 JavaScript의 변수는 어떤 타입이 올지 알 수 없기 때문에 type을 체크하는 것은 JavaScript 개발하는데 중요한 요소 중 하나라고 말할 수 있습니다.

 

오늘은 변수가 다양한 type중 Function type인지 체크하는 방법에 대해 알아보려고 합니다. 

 

1. instanceof

가장 먼저 instanceof 키워드를 사용하는 방법이 있습니다. 이 키워드를 사용하면 true/false로 결과를 받을 수 있습니다. 아래와 같이 사용하면 됩니다.

var func = function() {};

if(func instanceof Function) {
    console.log('func는 함수입니다.');
} else {
    console.log('func는 함수가 아닙니다.');
}

 

2. typeof

두 번째 방법은 typeof 키워드를 사용한 방법입니다. 

var func = function() {};

if(typeof func === 'function') {
    console.log('func는 함수입니다.');
} else {
    console.log('func는 함수가 아닙니다.');
}

 

3. object.prototype.toString

마지막 방법은 object.prototype.toString를 사용하는 방법입니다. toString 매서드는 일반적으로 '[object type]'이라는 문자열을 반환하는데, 여기서 type이 object의 type을 의미합니다.

var func = function() {};

if(Object.prototype.toString.call(func) == '[object Function]') {
    console.log('func는 함수입니다.');
} else {
    console.log('func는 함수가 아닙니다.');
}

 

 

참조:

https://www.geeksforgeeks.org/how-to-check-a-variable-is-of-function-type-using-javascript/

 

How to check a variable is of function type using JavaScript ? - GeeksforGeeks

A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.

www.geeksforgeeks.org

 

반응형