Rumah  >  Artikel  >  hujung hadapan web  >  ## Bagaimana untuk Mengekalkan Nilai Pembolehubah dalam Pendengar Acara: Lulus mengikut Nilai atau Rujukan?

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

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-25 03:27:29511semak imbas

## 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));
}

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);
}

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!

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