Awkward way of executing JavaScript code

javascript

Solution

This is a poor example. Consider the following:

var a = (function() {
  var ret = {};
  ret.test = "123";

  function imPrivate() { /* ... */ }
  ret.public = function() {
    imPrivate();
  }
  return ret;
})();

console.log(a)

`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.

Problem

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?

Original source

Related problems