変数をグローバルに管理するのではなく、関数内で管理する方法です。現在は、オブジェクト指向が普及してるので、あまりメリットがないかもしれませんが、現場の既存ソースを見て、読めないと困るので、内容だけ理解しておいたほうが良いと思います。
SAMPLE解説
<script language="javascript" type="text/javascript">
//関数クロージャ
function getCount(){
var i=0;
return function(add){
i+=add;
return i;
};
}
//内部の匿名関数を取得
var countUp = getCount();
var countUp2 = getCount();
</script>
関数内のローカル変数は外から操作できません。
クロージャではローカル変数を操作できる関数を返してあげることで、外から操作できるわけです。オブジェクト指向の考え方と似てますね。
以下のサイトで初心者向けにクロージャを説明してくれています。かなりわかりやすかったです。
DQNEO起業日記([JavaScript] 猿でもわかるクロージャ超入門 まとめ)
PR