I don't understand because when I instantiate twice Gadget function object, the console print me final 2 not 1, counter is incremented.
var Gadget = (function(){
var counter = 0;
return function(){ console.log( counter += 1 );}
})();
var g1 = new Gadget();
var g2 = new Gadget();
If I don't immediate execute function expression I don't get any output:
var Gadget = (function(){
var counter = 0;
return function(){ console.log( counter += 1 );}
}); // <---- not immediate execute expression
var g1 = new Gadget();
var g2 = new Gadget();
No output.