====== JavaScript クロージャ ====== --- //[[http://www.y2sunlight.com/water|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'')はクロージャが存在し続ける限り参照され続ける(捉えられ続ける)。この様にクロージャはオブジェクトの様に振舞います。