Memahami Penutupan JavaScript dalam Gelung
Masalahnya:
Dalam kod yang disediakan, penggunaan penutupan dalam satu gelung kelihatan mengelirukan. Khususnya, kejadian i dalam kurungan berganda telah menyebabkan kesukaran untuk memahami.
Penyelesaian: Kilang Fungsi
Untuk menangani isu ini, teknik yang dipanggil kilang fungsi boleh diambil bekerja. Daripada memberikan fungsi secara langsung kepada pengendali acara, kami boleh menggunakan kilang fungsi untuk menjana rujukan fungsi yang diingini.
Contoh Kod:
<code class="javascript">function generateMyHandler(x) { return function() { alert(x); }; } for (var i = 0; i < 10; i++) { document.getElementById(i).onclick = generateMyHandler(i); }</code>
Penjelasan:
Dalam kod ini, kami mencipta kilang fungsi bernama generateMyHandler yang mengambil parameter x. Kilang ini mengembalikan fungsi yang memberi amaran kepada nilai x. Dalam gelung, kami menggunakan generateMyHandler untuk setiap i dan menetapkan fungsi yang dikembalikan kepada pengendali acara.
Cara ia Menyelesaikan Masalah:
Menggunakan kilang fungsi membolehkan kami untuk mengasingkan penciptaan penutupan. Dengan memberikan i sebagai hujah kepada fungsi kilang, kami menangkap rujukan unik kepada i. Ini memastikan bahawa setiap penutupan mengekalkan contoh pembolehubahnya sendiri, menghapuskan isu pembolehubah yang dikongsi.
Kesimpulan:
Dengan menggunakan kilang fungsi, kami boleh menggunakan dengan berkesan penutupan dalam gelung tanpa menghadapi konflik atau kekeliruan. Teknik ini membantu memudahkan kod dan meningkatkan pemahaman kami tentang cara penutupan beroperasi dalam gelung acara JavaScript.
Atas ialah kandungan terperinci Mengapa Penutupan dalam Gelung Menyebabkan Kekeliruan, dan Bagaimana Kami Boleh Menyelesaikannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!