「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > ループ内のクロージャが混乱を引き起こすのはなぜですか?それを解決するにはどうすればよいですか?

ループ内のクロージャが混乱を引き起こすのはなぜですか?それを解決するにはどうすればよいですか?

2024 年 11 月 9 日に公開
ブラウズ:841

 Why Do Closures in Loops Cause Confusion, and How Can We Solve It?

ループ内の JavaScript クロージャを理解する

問題:
提供されたコードでのクロージャの使用法ループ内では混乱を招くようです。具体的には、二重括弧内の i の出現により、理解が困難になっています。

解決策: ファンクション ファクトリ

この問題に対処するには、ファンクション ファクトリと呼ばれる手法を使用できます。雇用される。イベント ハンドラーに関数を直接割り当てる代わりに、関数ファクトリを利用して目的の関数参照を生成できます。

コード例:

function generateMyHandler(x) {
  return function() {
    alert(x);
  };
}

for (var i = 0; i 

説明:

このコードでは、パラメーター x を取るgenerateMyHandlerという名前の関数ファクトリを作成します。このファクトリーは、x の値を警告する関数を返します。ループ内で、i ごとにgenerateMyHandlerを呼び出し、返された関数をイベント ハンドラーに割り当てます。

問題の解決方法:

関数ファクトリを使用すると、次のことが可能になります。クロージャの作成を分離します。 i を引数としてファクトリ関数に渡すことにより、i への一意の参照を取得します。これにより、各クロージャが変数の独自のインスタンスを保持することが保証され、共有変数の問題が排除されます。

結論:

関数ファクトリを採用することで、競合や混乱が発生することなくループ内でクロージャを実行できます。この手法はコードを簡素化し、JavaScript のイベント ループ内でクロージャがどのように動作するかについての理解を深めます。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3