ループ内でイベント リスナーを使用するときに関数に正しい変数値を渡すにはどうすればよいですか?

DDD
リリース: 2024-10-25 08:23:29
オリジナル
904 人が閲覧しました

How to Pass the Correct Variable Value to a Function When Using Event Listeners in Loops?

JS 変数の値を関数に渡す方法

配列を反復処理し、各要素にイベント リスナーを追加する場合、ループの値カウンタ変数が期待どおりに保持されない可能性があります。リスナーは、現在の値をキャプチャする代わりに、ループが終了した後の最終値を使用します。この問題に対処し、実際の値 (参照ではなく) を関数に渡すには、次のアプローチを検討してください。

最新のブラウザ:

let または const キーワードを使用するブロック スコープの変数を宣言するには:

<code class="javascript">for (let i = 0; i < results.length; i++) {
  let marker = results[i];
  google.maps.event.addListener(marker, 'click', () => change_selection(i));
}</code>
ログイン後にコピー

古いブラウザ:

変数の値をネストされた関数にパラメーターとして渡すことで、変数の値を保持するための別のスコープを作成します。 :

<code class="javascript">for (var i = 0; i < results.length; i++) {
  (function (i) {
    marker = results[i];
    google.maps.event.addListener(marker, 'click', function() {
      change_selection(i);
    });
  })(i);
}</code>
ログイン後にコピー

匿名関数を利用し、変数を引数として渡すことにより、その値を効果的に関数に渡し、クロージャを作成します。これにより、各リスナーが作成時に正しい値にアクセスできるようになります。

以上がループ内でイベント リスナーを使用するときに関数に正しい変数値を渡すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!