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件を見るIT用語: 型安全性(Type Safety)とは|TypeScriptが防ぐバグの種類
コンパイル時に型の不一致を検出する「型安全性」の概念と、JavaScriptからTypeScriptへの移行がなぜ有効なのかを解説。
PWA(プログレッシブウェブアプリ)
Service WorkerやWeb App Manifestを使い、Webアプリにネイティブアプリに近い体験を提供する技術。オフライン動作・ホーム画面への追加・プッシュ通知が実現できる。
Rust (ラスト)
「処理の速さ」と「メモリの安全性(バグの出にくさ)」を両立させた、世界で最もプログラマーに愛されている次世代言語。
SPA(シングルページアプリケーション)
ページ遷移時にブラウザをリロードせず、JavaScriptで動的にコンテンツを更新するWebアプリのアーキテクチャ。React・Vue・Angularで実装されることが多い。
WebAssembly(Wasm)
ブラウザ上でネイティブに近い速度で実行できるバイナリ命令形式。C・C++・Rustなどのコードをブラウザで動かすことができ、ゲーム・動画編集・CADなど計算負荷の高いWebアプリに使われる。
Ruby (ルビー)
「プログラミングを楽しむ」ことを目的に日本のまつもとゆきひろ氏が開発した、美しく書きやすい言語。