Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimana untuk Melepasi Nilai Pembolehubah Betul kepada Fungsi Apabila Menggunakan Pendengar Acara dalam Gelung?

Bagaimana untuk Melepasi Nilai Pembolehubah Betul kepada Fungsi Apabila Menggunakan Pendengar Acara dalam Gelung?

DDD
DDDasal
2024-10-25 08:23:29905semak imbas

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

Cara Menghantar Nilai Pembolehubah JS kepada Fungsi

Apabila melelaran melalui tatasusunan dan menambah pendengar acara pada setiap elemen, nilai gelung pemboleh ubah pembilang mungkin tidak dapat dikekalkan seperti yang diharapkan. Daripada menangkap nilai semasa, pendengar menggunakan nilai akhir selepas gelung ditamatkan. Untuk menangani isu ini dan memberikan nilai sebenar (bukan rujukan) kepada fungsi, pertimbangkan pendekatan berikut:

Pelayar Moden:

Gunakan kata kunci let atau const untuk mengisytiharkan pembolehubah berskop blok:

<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>

Pelayar Lama:

Buat skop berasingan untuk mengekalkan nilai pembolehubah dengan menghantarnya sebagai parameter kepada fungsi bersarang :

<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>

Dengan menggunakan fungsi tanpa nama dan menghantar pembolehubah sebagai hujah, anda secara berkesan menghantar nilainya kepada fungsi dan membuat penutupan. Ini memastikan setiap pendengar mempunyai akses kepada nilai yang betul pada masa penciptaan.

Atas ialah kandungan terperinci Bagaimana untuk Melepasi Nilai Pembolehubah Betul kepada Fungsi Apabila Menggunakan Pendengar Acara dalam Gelung?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn