Awkward way of executing JavaScript code-ThrowExceptions

Exception or error:

In the Google tutorial for implementing Google+ sign-in in Flask application, I discovered that the developer often uses an awkward way of executing JavaScript code:

Instead of doing

var a = foo(bar);

I see this:

var a = (function() {
  return foo(bar);
})();

What is the reason to do it the weird way?

How to solve:

This is a poor example. Consider the following:

var a = (function(){
    var ret = {};
    ret.test = "123";
    function imPrivate() { /* ... */ }
    ret.public = function() { imPrivate(); }
    return ret;
})();

a will contain the varible test and the function public, however you can not access imPrivate. This is the common way to handle public vs private variables;

See Why is this function wrapped in parentheses, followed by parentheses? for more info.

###

var a = (function() {
  return foo(bar);
})();

In this case this is really unnecessary, but this is not wrong and it will not throw an error.

But IIF some times uses like module pattern:

var a = (function() {
  /* some other code in own scope */
  return foo(bar);
})();

In this case IIF is just a module which exports something outside.

###

The closure function is used to encapsulate some of the attributes / methods in the function. Much like the private / public principle from other languages.

You can find more on this topic here under Module Pattern

Leave a Reply

Your email address will not be published. Required fields are marked *