## Bagaimana untuk Mengekalkan Nilai Pembolehubah dalam Pendengar Acara: Lulus mengikut Nilai atau Rujukan?

Mary-Kate Olsen
Lepaskan: 2024-10-25 03:27:29
asal
510 orang telah melayarinya

## How to Preserve Variable Values in Event Listeners: Pass by Value or by Reference?

Memelihara Nilai Pembolehubah dalam Pendengar Acara: Melepasi Nilai berbanding Rujukan

Apabila menetapkan pembolehubah di dalam gelung dan menambah pendengar acara, ia adalah penting untuk dipertimbangkan sama ada anda ingin menghantar nilai pembolehubah atau rujukan kepada pendengar.

Dalam kes anda, anda menghadapi isu di mana setiap pendengar menggunakan nilai akhir i dan bukannya nilai yang dimaksudkan pada masa ciptaan pendengar. Masalah ini timbul kerana JavaScript menggunakan pengangkat pembolehubah dengan kata kunci var, di mana pembolehubah diisytiharkan di bahagian atas skopnya, memberikannya skop global (walaupun diisytiharkan dalam blok).

Untuk menangani perkara ini, anda boleh menggunakan dua teknik:

Menggunakan Block-Scoping dengan let atau const:

Dalam penyemak imbas moden, anda boleh menggunakan kata kunci let atau const untuk mencipta pembolehubah berskop blok. Ini memastikan pembolehubah diisytiharkan dalam blok yang mengandunginya dan tidak boleh diakses di luarnya.

for (let i = 0; i < results.length; i++) {
  let marker = results[i];
  google.maps.event.addListener(marker, 'click', () => change_selection(i));
}
Salin selepas log masuk

Mencipta Penutupan dengan Fungsi Tanpa Nama:

Dalam pelayar lama yang melakukannya tidak menyokong pembolehubah berskop blok, anda boleh membuat penutupan untuk mengekalkan nilai semasa i untuk setiap lelaran. Ini melibatkan membungkus penciptaan pendengar acara di dalam fungsi tanpa nama dan menghantar i sebagai parameter:

for (var i = 0; i < results.length; i++) {
  (function (i) {
    marker = results[i];
    google.maps.event.addListener(marker, 'click', function() {
      change_selection(i);
    });
  })(i);
}
Salin selepas log masuk

Dengan menghantar i ke dalam fungsi tanpa nama sebagai hujah pertama, anda secara berkesan menghantar nilai i di masa fungsi memanggil pendengar.

Atas ialah kandungan terperinci ## Bagaimana untuk Mengekalkan Nilai Pembolehubah dalam Pendengar Acara: Lulus mengikut Nilai atau Rujukan?. 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
Artikel terbaru oleh pengarang
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!