DEV Community

tutorials-kept-simple
tutorials-kept-simple

Posted on • Originally published at flexiple.com

8 4

Check if a variable is of function type or not

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.

Table of Contents

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}
Enter fullscreen mode Exit fullscreen mode

Anonymous Function declaration

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

var anon = function(){//code }
Enter fullscreen mode Exit fullscreen mode

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
}
Enter fullscreen mode Exit fullscreen mode

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>
Enter fullscreen mode Exit fullscreen mode

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>
Enter fullscreen mode Exit fullscreen mode

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>
Enter fullscreen mode Exit fullscreen mode

Caveats

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

SurveyJS custom survey software

JavaScript UI Libraries for Surveys and Forms

SurveyJS lets you build a JSON-based form management system that integrates with any backend, giving you full control over your data and no user limits. Includes support for custom question types, skip logic, integrated CCS editor, PDF export, real-time analytics & more.

Learn more

Top comments (0)

nextjs tutorial video

Youtube Tutorial Series 📺

So you built a Next.js app, but you need a clear view of the entire operation flow to be able to identify performance bottlenecks before you launch. But how do you get started? Get the essentials on tracing for Next.js from @nikolovlazar in this video series 👀

Watch the Youtube series