Rumah >hujung hadapan web >tutorial js >Bagaimanakah Penutupan Boleh Menyelesaikan Masalah Perkongsian Negeri dalam Gelung?

Bagaimanakah Penutupan Boleh Menyelesaikan Masalah Perkongsian Negeri dalam Gelung?

Patricia Arquette
Patricia Arquetteasal
2024-10-27 00:30:30412semak imbas

How Can Closures Solve the State Sharing Problem in Loops?

Menggunakan Penutupan Secara Berkesan dalam Gelung: Memahami Konsep

Gelung berasaskan penutupan boleh mencabar untuk difahami, tetapi ia menawarkan teknik yang berkesan untuk mengekalkan keadaan unik semasa mengulang. Untuk memudahkan konsep, mari kita lihat semula kod contoh:

<code class="javascript">function addLinks() {
    for (var i = 0, link; i < 5; i++) {
        link = document.createElement("a");
        link.innerHTML = "Link " + i;
        link.onclick = function(num) {
            return function() {
                alert(num);
            };
        }(i);
        document.body.appendChild(link);
    }
}
window.onload = addLinks;</code>

Di sini, pembolehubah i ditangkap oleh fungsi dalaman yang dicipta dalam gelung. Fungsi ini kemudiannya ditetapkan sebagai pengendali acara kepada setiap pautan yang dibuat. Tanda kurungan berganda, (i), menyertakan panggilan fungsi yang serta-merta memanggil fungsi dalam.

Sebab pembinaan ini adalah untuk mencipta penutupan yang berbeza bagi setiap nilai i. Jika kita hanya memperuntukkan fungsi dalam secara langsung (tanpa kurungan berganda), semua penutupan akan berkongsi rujukan yang sama kepada pembolehubah i.

Pendekatan Kilang Fungsi

Seterusnya pendekatan biasa untuk menggunakan penutupan dalam gelung adalah dengan menggunakan kilang fungsi. Teknik ini mencipta rujukan fungsi untuk setiap lelaran, menangkap nilai unik i:

<code class="javascript">function generateMyHandler(x) {
    return function() {
        alert(x);
    }
}

for (var i = 0; i < 10; i++) {
    document.getElementById(i).onclick = generateMyHandler(i);
}</code>

Pendekatan ini memastikan setiap pengendali peristiwa mempunyai contoh pembolehubah x sendiri, menghalang perkongsian pembolehubah dan kelakuan tidak konsisten.

Kesimpulan

Memahami penutupan dalam gelung adalah penting untuk memanfaatkan kuasanya dalam pengaturcaraan JavaScript. Dengan membuat penutupan unik atau menggunakan kilang fungsi, pembangun boleh mengekalkan keadaan tersendiri dalam gelung, membolehkan struktur kod yang kompleks dan cekap.

Atas ialah kandungan terperinci Bagaimanakah Penutupan Boleh Menyelesaikan Masalah Perkongsian Negeri 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