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

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.


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.

Tags:

Javascript