クロージャとは関数を抜けた後にも生きているローカル変数を使用し、状態を持つ関数の
事です。
ローカル変数が関数を抜け出しても生きてるんだぜ
![](https://stat100.ameba.jp/blog/ucs/img/char/char2/176.gif)
じぇじぇじぇだな
![](https://stat100.ameba.jp/blog/ucs/img/char/char2/254.gif)
クロージャの使い方を説明します。
1. 関数を宣言する
2. この宣言した関数にローカル変数を定義する
3. 宣言した関数の中に入れ子でさらに関数を定義し、
この入れ子の関数に2で定義したローカル変数を使う
4. 入れ子の関数をreturnする
5. 1の関数を変数に代入する
6. 変数(関数)を実行すると、ローカル変数の値が保持される。
これがクロージャ
ソースで言うとこんな感じ
function f(){ //1の所
var number = 0 //2の所;
return function() { return ++number;} //3~4の所
}
fn = f(); //5の所
fn(); 0が返ってくる
fn(); 1が返ってくる
fn(); 2が返ってくる
と書いてふと思ったんだが、Javaはアルゴリズム、デザインパターンとかを学べば、
コードの質が良くなると思うんだけど、
JavaScriptは何を指針として腕を磨けば良いんだろう??
誰か教えて~
まぁ、Javaも初心者なので、プログラミングの考え方がまだまだなんだけどね
![](https://stat100.ameba.jp/blog/ucs/img/char/char2/141.gif)