Water Sunlight

軽量プログラミングの文法 - JavaScript/Python

ユーザ用ツール

サイト用ツール


js:function:closure

文書の過去の版を表示しています。


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)はクロージャが存在し続ける限り参照され続ける(捉えられ続ける)。この様にクロージャはオブジェクトの様に振舞います。

js/function/closure.1618206947.txt.gz · 最終更新: 2021/04/12 14:55 by tanaka