目次

JavaScript クロージャ

y2sunlight 2021-04-05

高階関数とは

関数の引数または戻り値として、関数を使用できる関数のことを高階関数と呼びます。

クロージャとは

クロージャとは、外側のローカル変数を参照している関数内関数の事です。
通常、クロージャは関数の戻り値として使用されるので、高階関数の内部に存在します。
即ち、クロージャとは高階関数内のローカル変数を参照している関数内関数であり、高階関数の戻り値として設定されます。

function higher(n) {
    var count = n;
    
    function closure() {
        return count++;
    }
    return closure;
}

var myClosure = higher(100);
console.log(myClosure());    // 100
console.log(myClosure());    // 101
console.log(myClosure());    // 102

higher() はクロージャ(closure())を返す高階関数で、higher() のローカル変数(count)はクロージャが存在し続ける限り参照され続ける(捉えられ続ける)。この様にクロージャはオブジェクトの様に振舞います。