javaScriptについて勉強しているのですがどうしてもクロージャを理解することができません。
いくつかWebサイトの記事を読んでみたのですがやはりどうなっているのかわからないでいます。
lang
1function makeCountor(){ 2 var count = 0; 3 function push(){ 4 count++; 5 conlose.log(count); 6 } 7 return push; 8} 9 10c = makeCountor(); 11c(); //->1 12c(); //->2 13c(); //->3
上記のようなコードを実行した場合1、2、3、とカウントされて表示されて行くらしいのですが、これがよく理解できていません。
私の理解ではcの実態はmakeCountor関数なのでc()が実行されると
lang
1function makeCountor(){ 2 var count = 0; 3 function push(){ 4 count++; 5 conlose.log(count); 6 } 7 return push; 8}
この関数部分が実行されていると思っています。
関数の中の1行目で下記のようにcountを毎回初期化してしまっています。にも関わらずなぜcountに格納された値が増えて1、2、3とカウントアップしているのか理解できないです。
var count = 0;
c();が実行されている時に実行するのは以下の部分だけなのでしょうか?
function push(){ count++; conlose.log(count); } return push;
独学では理解できそうになかったので皆様のお力をお借りしたいです。よろしくお願いします。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。