Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What does (function (x,y){...})(a,b); mean in JavaScript?

Tags:

javascript

I saw this function:

(function (x, y, data, lbl, dot) {
    // Function body...
})(x, y, data[i], labels[i], dot);

What is this? A function? Why place a function definition in ()?

like image 341
user285020 Avatar asked Oct 13 '10 08:10

user285020


People also ask

What does function () mean in JavaScript?

A function in JavaScript is similar to a procedure—a set of statements that performs a task or calculates a value, but for a procedure to qualify as a function, it should take some input and return an output where there is some obvious relationship between the input and the output.

What is function () )() in JavaScript?

It's an Immediately-Invoked Function Expression, or IIFE for short. It executes immediately after it's created. It has nothing to do with any event-handler for any events (such as document. onload ). Consider the part within the first pair of parentheses: (function(){})(); ....it is a regular function expression.

What are the 3 types of functions in JavaScript?

There are 3 ways of writing a function in JavaScript: Function Declaration. Function Expression. Arrow Function.

Why `` is used in JavaScript?

Although single quotes and double quotes are the most popular, we have a 3rd option called Backticks ( `` ). Backticks are an ES6 feature that allows you to create strings in JavaScript. Although backticks are mostly used for HTML or code embedding purposes, they also act similar to single and double quotes.


2 Answers

In javascript you can have anonymous and self invoking functions.

function add(a, b)
{
   return a + b;
}

is same as

var add = function (a, b) {
             return a + b;
          }

and you call these as

add(10, 20)

You can define the function and call it immediately as

(
   function(a, b)
   {
      return a + b;
   }
)(10, 20);

The

   (
       function(a, b)
       {
          return a + b;
       }
    )

part defines a function, and the (10, 20) immediately after it calls the function just defined, with 10 and 20 as arguments to it.

Since the function does not have a name, it cannot be used later in the code.

The code in your question is probably minified, and creates a function in a similar way and calls it immediately.

like image 92
Nivas Avatar answered Oct 11 '22 02:10

Nivas


function() {} is a definition of an anonymous function and (function() {})() is a call of that anonymous function.

This works since functions can be passed like data. So window.alert is the known alert function itself and window.alert() will call that function.

This technique is often used to keep the current variable scope clean as the function has its own variable scope.

like image 26
Gumbo Avatar answered Oct 11 '22 01:10

Gumbo