Alex Rivera | Logout

Self-Invoking Functions in JavaScript

Asked 2010-10-27T16:45:07.380
10

What's the difference between these functions? Thanks for reply!

Function #1

var myQuery = (function() {

  (...)

})();

Function #2

var myQuery = (function() {

  (...)

});
Edit
Report

2 Answers

9

In the first case, you're self-invoking a function literal and assigning the value of the invocation to the variable myQuery.

In the second case, you're assigning a reference to the anonymous function that you've defined. Here, myQuery acts like a pointer or a reference to a function.

To better illustrate this.

var myQuery = (function() {
   return "Hello";
})();

In this case, myQuery contains the value Hello. Now if you had:

var myQuery = (function() {
   return "Hello";
});

myQuery contains a reference to the function. If you used console.log in Firebug to output this value, you would see function(). This reference is something you can pass around or even invoke. So:

var myQuery = (function() {
   return "Hello";
});

var value = myQuery();

Now, value will contain Hello. Hope this explains the difference.

answered 2010-10-27T16:52:18.730
0

The first one is a self-invoking function, called with an empty parameter list. The value of myQuery will be what this function returns.

The second one is simple assignment of an anonymous function. There is no invocation in this one.

answered 2010-10-27T16:51:05.647

Your Answer