クロージャとは、ローカル変数を参照している関数をネストした関数のことです。
以下の処理では、匿名関数がローカル変数の値を参照しつづけているため、cnt関数が終了してもcounterの値を保持し続けることが出来ます。
js
function cnt(i) {
var counter = i;
return function (){
return ++counter;
}
}
var count = cnt(1);//匿名関数を代入する。
console.log(count());//匿名関数を実行すると2
console.log(count());//匿名関数を実行すると3
console.log(count());//匿名関数を実行すると4
関数の呼び出しの都度に生成されるため、以下のように2回呼び出すと、それぞれは、独立したスコープになります。
js
function cnt(i) {
var counter = i;
return function (){
return ++counter;
}
}
var countA = cnt(0);//匿名関数を代入する。
var countB = cnt(100);//匿名関数を代入する。
console.log(countA());//匿名関数を実行すると1
console.log(countB());//匿名関数を実行すると101
console.log(countA());//匿名関数を実行すると2
console.log(countB());//匿名関数を実行すると102
以上で記事の解説はお終い!
HTML、CSS、JavaScriptをもっと勉強したい方にはUdemyがオススメ!同僚に差をつけよう!