Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimana untuk Mengekalkan Nilai Pembolehubah Apabila Menghantar Argumen kepada Fungsi Di Dalam Gelung?

Bagaimana untuk Mengekalkan Nilai Pembolehubah Apabila Menghantar Argumen kepada Fungsi Di Dalam Gelung?

Linda Hamilton
Linda Hamiltonasal
2024-10-24 22:00:30254semak imbas

How to Preserve Variable Values When Passing Arguments to Functions Inside Loops?

Memelihara Nilai Pembolehubah Apabila Menghantar Argumen kepada Fungsi

Apabila bekerja dengan gelung JavaScript, anda mungkin menghadapi situasi di mana anda perlu mengekalkan nilai pembolehubah apabila menghantarnya ke fungsi. Senario ini timbul apabila nilai pembolehubah mungkin berubah semasa pelaksanaan gelung, membawa kepada gelagat yang tidak dijangka dalam pendengar acara.

Pertimbangkan contoh berikut:

<code class="js">for (var i = 0; i < results.length; i++) {
    marker = results[i];
    google.maps.event.addListener(marker, 'click', function() {
        change_selection(i);
    });
}

Dalam kod ini, pendengar acara ialah dilampirkan pada setiap penanda dalam gelung. Walau bagaimanapun, apabila pendengar dicetuskan, ia menggunakan nilai akhir i, iaitu panjang tatasusunan hasil apabila gelung berakhir. Tingkah laku ini tidak diingini kerana ia menyebabkan nilai yang sama digunakan untuk semua pendengar acara.

Untuk mengekalkan nilai i bagi setiap pendengar, anda boleh menggunakan pembolehubah berskop blok (dalam penyemak imbas moden) atau penutupan (dalam pelayar lama).

Pelayar Moden (ES6):

<code class="js">for (let i = 0; i < results.length; i++) {
    let marker = results[i];
    google.maps.event.addListener(marker, 'click', () => change_selection(i));
}</code>

Menggunakan kata kunci let mencipta pembolehubah berskop blok yang hanya boleh diakses dalam gelung. Ini memastikan bahawa setiap pendengar acara mempunyai salinan nilai i sendiri pada masa penciptaan.

Pelayar Lama:

<code class="js">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>

Mencipta fungsi dan panggilan tanpa nama ia dengan i sebagai hujah pertama mencipta penutupan. Fungsi ini mengekalkan nilai i pada masa penciptaannya, memastikan setiap pendengar acara menggunakan nilai yang betul untuk penanda khususnya.

Atas ialah kandungan terperinci Bagaimana untuk Mengekalkan Nilai Pembolehubah Apabila Menghantar Argumen kepada Fungsi Di 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