ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript ループのイベント ハンドラーにクロージャが必要なのはなぜですか?

JavaScript ループのイベント ハンドラーにクロージャが必要なのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-06 15:44:02534ブラウズ

Why Do Event Handlers in JavaScript Loops Need Closures?

JavaScript ループ内のイベント ハンドラー: クロージャの必要性

JavaScript では、ループ内でイベント ハンドラーを操作するときに、次のことが必要になる場合があります。適切なパラメータの受け渡しを保証するためにクロージャを実装します。次のコードを考えてみましょう。

<code class="javascript">for (var i = 0; i < blah.length; i++) {
  var select = document.createElement('select');
  select.onchange = function() {
    onStatusChanged(select, callid, anotherid);
  };
}

このシナリオでは、onchange イベントが発生すると、onStatusChanged() に渡される値はすべての 要素)、c (現在の callid)、および a (現在の anotherid) の 3 つの引数をパラメーターとして受け取ります

  • クロージャはすぐに呼び出しますs、c、および a の現在の値を渡す関数。
  • onchange イベントが発生すると、クロージャが実行され、onStatusChanged() が各