Explain the following JavaScript statement?

javascript

Solution

This code is equivalent to:

function Ninja() {
    // nothing here
}

var ninja = new Ninja();

Though in the code you listed, the function/object Ninja is not global scope.

The code `(function() {...})();` basically says "take whatever function is contained inside here and execute it immediately". So it's creating an anonymous function and calling it right afterwards.

Problem

``` var ninja = (function(){ function Ninja(){}; return new Ninja(); })(); ``` Why is the function above encapsulated in parentheses and why is there a `();` at the end? I think it's a constructor function because of the `();` at the end, but why is the object wrapped in parentheses?

Original source

Related problems