【8/27まで】Udemyの人気コースが今なら1,200円から!!

【JavaScript入門】クロージャ

クロージャとは

クロージャとは、ローカル変数を参照している関数をネストした関数のことです。
以下の処理では、匿名関数がローカル変数の値を参照しつづけているため、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

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です