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