Rumah >hujung hadapan web >tutorial js >Bagaimana untuk Mengekalkan Nilai Pembolehubah Apabila Menghantar Argumen kepada Fungsi Di Dalam Gelung?
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!