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

DDD
Lepaskan: 2024-10-25 08:23:29
asal
904 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!