クロージャ
counter = function() { var i=1; return { count: function() { return i; }, up: function() { i = i + 1; }, init: function() { i = 1; } }; }; // 実行コンテキストcounter()の終了 // 同時にクロージャの生成 closure = counter(); // コンテキストの外側から関数スコープ変数のiにアクセス // ガベージコレクタがiを回収しない closure.up() closure.up() closure.up() console.log(closure.count()); // 4 closure.init(); console.log(closure.count()); // 1