IT用語集 › プログラミング › クロージャ

クロージャ

プログラミング Svenska → 更新: 2026-10-20

レキシカルスコープの変数を「捕捉」する関数。function counter() { let n = 0; return () => ++n; }では、親関数が戻った後でも、返された関数がnにアクセスできる。JS、Python、Ruby、Go、Rustなど現代の言語では標準機能だ。

実用例は、状態を捕捉したコールバック、関数ファクトリ、部分適用、クラスを使わないカプセル化など。JavaScriptではIIFE(即時実行関数式)パターンを可能にする。Pythonでは、入れ子関数で捕捉した変数を変更するのにnonlocalキーワードを使う。

メモリ面の注意として、クロージャは捕捉したスコープへの参照を保持するため、大きなオブジェクトを捕捉するとメモリリークの原因になりうる。Rustではクロージャは型(Fn、FnMut、FnOnce)であり、所有権の意味づけが明示的だ。HaskellやOCamlのような静的型付き関数型言語では、クロージャは中核の構成要素で、全てがその上に築かれている。

← 用語集に戻る