var outFunc = function(){
var count = 0;
return function(){ return ++count; };
}();

console.log(outFunc()); // 1
console.log(outFunc()); // 2

クロージャは静的スコープ。簡易クラス

内側の関数から見て、スコープ外のcount を使っている。
一見、スコープの外側の環境を閉じ込めているように見えるが、
実際にはその変数をコピーしておらず、ただ参照しているだけなので要注意!

内側の関数を戻した、外側のoutFunc をクラスと見れば、
count がメンバー変数(プロパティ)で、内側の関数がメソッドになる。
メソッドでメンバー変数を更新すれば、更新後のメンバー変数が保持されるのは当たり前