var foo = (function(){ var x = 0; return function(){return x++;}; })()
Почему выражение var x = 0 выполняется только один раз, это мое самое большое заблуждение по этому поводу.