Flexiple Logo
  1. Home
  2. Blogs
  3. JavaScript
  4. Check if a variable is of function type or not

Check if a variable is of function type or not

Author image

Pooja Hariharan

Software Developer

Published on Thu Mar 10 2022

Javascript: Check if a variable is of function type

A JavaScript function is a block of code designed to perform a particular task. It is executed when it is invoked(when something calls it). A function can be either a named or an anonymous one. This article talks about how to go about checking whether a variable is of 'Function' type or not. Before we understand the different methods of implementing this and also why anyone would want to assign a function to a variable let's look at how named and anonymous functions are declared.

Function declaration types

Named Function declaration

This function has a named identifier associated with it which can be used to invoke the function

function functionName(parameter1, paramter2) { //code}

Anonymous Function declaration

It is a function that is declared without any named identifier to refer to it.

var anon = function() { //code }

Advantage of assigning a function to a variable

Assigning a function to a variable allows us to pass this variable as a parameter to another function. This is particularly useful in scenarios that require runtime flexibility. You would mainly use such functions to run a load of code in response to an event firing For example, a button being clicked using an event handler.

myButton.onclick = function() {
    //response actions
}

Code

Using instanceof operator

The instanceof operator is used to check the type of objects at run time. This operator returns a Boolean value(true or false). In the example below, an IF statement is used to check if the type of parameter passed to checkFunction() is of Function type or not.

//javascript check if function-Using instanceof operator
<
script >

    // Declare a variable and initialize it // Declare a variable and initialize it with an anonymous function
    var exampleVar = function() {
        /* A set of statements */ };

// to check a variable is of function type or not
function checkFunction(x) {

    if (x instanceof Function) {
        document.write("Variable is of function type");
    } else {
        document.write("Variable is not of function type");
    }
}

// Function call
checkFunction(exampleVar);

<
/script>

Using Strict Equality comparison (===) along with typeof operator

In JavaScript, strict equality comparison (===) Operator is used to check whether two entities are of not only equal values but also of equal type. The typeof operator returns a string which indicates the type of the unevaluated operand. Both of these operators provide a Boolean result. This result can be compared using the IF statement to check if the object type is "Function'.

//javascript check if function-Using Strict Equality comparison (===) along with typeof operator
<script >

    // Declare a variable and initialize it with an anonymous function
    var exampleVar = function() {
        /* A set of statements */ };

// to check a variable is of function type or not
function checkFunction(x) {
    if (typeof x === "function") {
        document.write("Variable is of function type");
    } else {
        document.write("Variable is not of function type");
    }
}

// Function call
checkFunction(exampleVar);

</script>

Using object.prototype.toString

This method uses object.prototype.toString. Every object has a toString() method, which returns ‘[object type]’ where ‘type’ is the object type. An IF statement can be used to compare if the returned value is of the type 'Function'.

//javascript check if function-Using object.prototype.toString
<script >

    // Declare a variable and initialize it with an anonymous function
    var exampleVar = function() {
        /* A set of statements */ };

// to check a variable is of function type or not
function checkFunction(x) {
    if (Object.prototype.toString.call(x) == '[object Function]') {
        document.write("Variable is of function type");

    } else {
        document.write("Variable is not of function type");
    }
}

// Function call
checkFunction(exampleVar);

</script>

Caveats

In Chrome typeof(obj) === 'function' appears to be the fastest; however, in Firefox obj instanceof Function is performs relatively better.

Related Blogs

Browse Flexiple's talent pool

Explore our network of top tech talent. Find the perfect match for your dream team.

Morty Proxy This is a proxified and sanitized view of the page, visit original site.