IT用語: クロージャ(Closure)とは|関数が変数を「覚える」仕組み
関数が定義された時点のスコープの変数を参照し続けるクロージャの仕組みとカウンターなどの実用例を解説。
クロージャとは
クロージャは、「関数が定義された時点の外側のスコープ(変数環境)を記憶し、後からでもその変数にアクセスできる」という性質を持つ関数です。JavaScriptをはじめ多くの言語でサポートされており、状態の隠蔽やファクトリ関数などに活用されます。
シンプルな例:カウンター
function makeCounter() {
let count = 0; // 外側の変数
return function() {
count++; // 内側の関数がcountを「覚えている」
return count;
};
}
const counter = makeCounter();
counter(); // → 1
counter(); // → 2
count は外から直接変更できません。これがカプセル化(情報隠蔽)の効果です。
なぜ重要なのか?
ReactのuseStateフックやイベントハンドラーなど、現代のフロントエンド開発はクロージャを多用しています。「なぜこの変数が古い値を持っているのか?」というバグの多くはクロージャの仕組みを理解していないことが原因です。
関連する用語 (プログラミング)
全33件を見るJAMstack
JavaScript・APIs・Markupの頭文字をとったWebアーキテクチャ。ビルド時に静的HTMLを生成し、動的機能はAPIで補完することで高速・安全・スケーラブルなWebサイトを実現する。
Rust (ラスト)
「処理の速さ」と「メモリの安全性(バグの出にくさ)」を両立させた、世界で最もプログラマーに愛されている次世代言語。
GraphQL
FacebookがRESTの課題を解決するために開発したAPIクエリ言語。クライアントが必要なデータの形を宣言的に指定して取得でき、オーバーフェッチ・アンダーフェッチを解消する。
Go / Golang (ゴー言語)
Google社が開発した、処理速度が超絶爆速で、大量のアクセスに強い現代的なプログラミング言語。
IT用語: ソフトウェアテストの種類|単体・結合・E2Eテストの違い
ユニットテスト・結合テスト・E2Eテストの役割とテストピラミッドの考え方を解説。
SPA(シングルページアプリケーション)
ページ遷移時にブラウザをリロードせず、JavaScriptで動的にコンテンツを更新するWebアプリのアーキテクチャ。React・Vue・Angularで実装されることが多い。