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