ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript のクロージャを理解する: 混乱から明確さへ
あなたはプロジェクトに取り組んでおり、関数の実行が終了した後でも変数の値を「記憶」する関数が必要です。クロージャは魔法のバックパックのようなもので、コード内のどこに行っても、前のレッスンで得た知識を持ち運ぶことができます。これは、JavaScript の中で最も強力であるにもかかわらず誤解されている概念の 1 つです。しかし、心配しないでください。このガイドが終わるまでに、クロージャは頭が痛むような作業から「なるほど!」に変わるでしょう
クロージャとは、外側の関数の実行が終了した後でも、関数が周囲の状態 (スコープ内の変数) を「記憶」することです。これをわかりやすい例えで分析してみましょう:
あなたが学生だと想像してください。あなたはメモ、ペン、本が入ったバックパックを持っています。教室を出ても(外側の機能)、バックパックの中のものすべてにアクセスできます(閉鎖)。後で問題を解決する必要があるときはいつでも、バックパックに保存した知識を取り出すことができます。
JavaScript では、次の場合にクロージャが発生します。
コード例を使用してクロージャの動作を見てみましょう。
function outerFunction() { const outerVariable = 'Hello, Closure!'; function innerFunction() { console.log(outerVariable); } return innerFunction; } const myClosure = outerFunction(); myClosure(); // Output: "Hello, Closure!"
ここで何が起こっているのですか?
function createCounter() { let count = 0; return function () { count++; return count; }; } const counter = createCounter(); console.log(counter()); // Output: 1 console.log(counter()); // Output: 2
ここで何が起こっているのですか?
ループ内でクロージャを使用すると、開発者がつまずくことがよくあります。
for (let i = 1; i <= 3; i++) { setTimeout(() => console.log(i), i * 1000); } // Output: 1, 2, 3 (each after 1 second)
なぜこれが機能するのですか?
? ドキュメント: MDN の閉鎖
クロージャーは単なる理論上の概念ではなく、非常に実用的です。ここでは、クロージャが有効な一般的なシナリオをいくつか紹介します。
クロージャは計算された値を保存して再利用できるため、時間とリソースを節約できます。
function outerFunction() { const outerVariable = 'Hello, Closure!'; function innerFunction() { console.log(outerVariable); } return innerFunction; } const myClosure = outerFunction(); myClosure(); // Output: "Hello, Closure!"
クロージャは、状態を維持するためにイベント リスナーでよく使用されます。
function createCounter() { let count = 0; return function () { count++; return count; }; } const counter = createCounter(); console.log(counter()); // Output: 1 console.log(counter()); // Output: 2
クロージャを使用してプライベート変数を作成し、機能をカプセル化できます。
for (let i = 1; i <= 3; i++) { setTimeout(() => console.log(i), i * 1000); } // Output: 1, 2, 3 (each after 1 second)
クロージャにより次のことが可能になります:
クロージャーは、JavaScript におけるスイスアーミーナイフのようなものです。データのキャッシュ、イベントの処理、プライベート変数の作成のいずれの場合でも、クロージャはアプリの状態を管理する強力な方法を提供します。
あなたの課題: 単純なカウンターの構築やキャッシュ メカニズムの作成など、小規模なプロジェクトでクロージャを使用してみてください。コントロール クロージャがどれほど多くの効果をもたらすかに驚かれるでしょう!
この記事が気に入っていただけた場合は、私の仕事をサポートすることを検討してください:
以上がJavaScript のクロージャを理解する: 混乱から明確さへの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。