【くろーじゃ】
クロージャ とは?
💡 関数が「生まれた場所の記憶」を持ち続ける仕組み
📌 このページのポイント
- 関数は定義時の外側の変数を「閉じ込めて」持ち続ける
- カウンターやプライベート変数のような「状態を持つ関数」を作れる
- JavaScriptのモジュールパターンやReactのフックでも内部的に使われている
- 変数のコピーではなく参照を保持するため、意図しない共有に注意が必要
クロージャって普通の関数と何が違うの?
関数が「定義された場所の変数」を覚えていることだよ。例えば関数の中に関数を書いて、内側の関数が外側の変数を使うと、外側の関数が終わっても内側の関数はその変数を持ち続ける。
どんなときに使うの?
カウンターが典型例だよ。「count = 0」を外側に持ち、内側の「increment」関数がそれを増やす。incrementを返すと、呼ぶたびにcountが増え続ける。外から直接countにはアクセスできないプライベートな状態が作れる。
コピーじゃなくて参照って?
じゃあletを使えば解決するの?
まとめ:ざっくりこれだけ覚えればOK!
クロージャって出てきたら「変数を閉じ込めた関数」と思えばだいたいOK!
📖 おまけ:英語の意味
「Closure」 = 閉包・閉じること
💬 変数を「閉じ込める(close over)」ことからクロージャ。数学の「閉包」の概念に由来する