クロージャとは?
くろーじゃ
クロージャとは、関数がその定義時の変数環境を「閉じ込めて」保持する仕組みで、外側のスコープの変数を関数の内部から参照できます。
クロージャ(closure)とは、プログラミングにおいて、関数がその定義されたスコープ(変数の有効範囲)の変数を、関数が実行される時点でも参照・保持できる仕組みのことです。「関数とその環境のセット」とも表現されます。
通常、関数の外側で宣言されたローカル変数はその関数が終了すると破棄されますが、クロージャではその変数への参照が内側の関数によって保持され、外側の関数が終了した後も変数の値が維持されます。これを「変数のキャプチャ」と呼びます。
クロージャはJavaScript・Python・Rubyなど多くの言語でサポートされています。主な活用場面は次の通りです。
- カウンターや状態の保持(プライベート変数の模倣)
- コールバック関数やイベントハンドラへの引数の束縛
- 関数ファクトリ(設定を固定した関数を動的に生成する)
- 非同期処理での変数の持ち越し
たとえばJavaScriptで、カウントを増やす関数を返す関数を書いた場合、返された関数は外側のカウント変数を閉じ込めて保持します。これがクロージャの典型例です。
クロージャはコードの抽象化や再利用性を高める強力な機能ですが、意図せず大きなオブジェクトを捕捉するとメモリリークの原因にもなるため、注意が必要です。
使い方・例文
JavaScriptでカウンター関数を作る際に「クロージャを使ってプライベートな変数を保持する」という表現がよく使われます。たとえば「クロージャによってcount変数がスコープ外からアクセスできないようにしている」のような文脈で登場します。
この用語をシェア
最終更新: