クロージャ 【closure】 関数閉包
概要
クロージャ(closure)とは、プログラミング言語の機能・仕様の一つで、あるコードブロック内で定義された関数などが、そのブロックをスコープとする変数などを参照できること。また、そのような機能を利用してブロック内部で定義された関数のこと。変数のスコープ(有効範囲)を形成するようなコードブロック(言語により異なるが典型的には例えば関数)の内側で関数などを定義すると、関数内で外側のブロック内で宣言されたローカル変数にアクセスすることができる。
クロージャの仕組みが無ければ関数からアクセスできるのは自身の引数、自身の内部で宣言されたローカル変数、プログラム全体から共通して参照できるグローバル変数に限られるが、クロージャによって自身を含むブロックの変数も利用することができる。
クロージャは関数を引数として受け取る関数(高階関数)に引数(コールバック関数)として渡すことができる。単なる関数よりも自由度が高く、複雑な処理を記述することができる。また、クロージャは実際に呼び出されるまで実行されない遅延評価が行われるため、関数型言語などでは制御構造の定義などにも利用される。
(2023.4.19更新)