Rumah >hujung hadapan web >tutorial js >Mengapa Semua Pengendali Klik Saya Mengembalikan 'Pautan 5'?

Mengapa Semua Pengendali Klik Saya Mengembalikan 'Pautan 5'?

DDD
DDDasal
2024-12-27 10:47:13202semak imbas

Why Do All My Click Handlers Return

Isu Gelung Terkenal Javascript: Penutupan Membongkar Keajaiban

Isu gelung terkenal timbul apabila coretan kod cuba mencipta koleksi pautan dengan pengendali klik yang unik. Namun, setiap klik didaftarkan sebagai "pautan 5", menimbulkan kebingungan.

Penutupan: Ahli Sihir Enigmatic

Teka-teki terletak pada skop JavaScript, sebuah alam terikat mengikut fungsi, bukan blok. Penutup, ahli sihir bertudung, menjerat skop tertutup dalam genggaman mereka.

Gelung Cacat

Dalam gelung sesat, pembolehubah 'i' dihadkan dalam fungsi, dipenjarakan oleh penjara penutupan. Apabila gelung selesai, 'i' bertukar menjadi "5," meninggalkan kesan hantunya pada pengendali yang malang.

Gelung Penyelamat

Secercah harapan muncul daripada gelung kedua. Setiap lelaran memunculkan objek fungsi bebas, masing-masing menjaga 'num' sentinelnya sendiri. Jejak ini menentang sentuhan mutagenik masa, melindungi pengendali daripada mantra berbahaya '5.'

Triniti yang Dioptimumkan

Sementara penutupan memacu transformasi ajaib ini, ia menuntut harga yang mewah - dua objek fungsi segar setiap pautan. Penyelesaian yang lebih anggun timbul daripada memanfaatkan pengetahuan rahsia DOM. Dengan menyimpan data secara langsung pada nod, kami mencipta pautan dengan kenangan yang berbeza, dibebaskan daripada kezaliman skop luar.

The Arcane Elixir

Pesona sebenar terletak pada ramuan kod ini:

function linkListener() {
    alert(this.i);
}

function addLinks() {
    for(var i = 0; i < 5; ++i) {
        var link = document.createElement('a');
        link.appendChild(document.createTextNode('Link ' + i));
        link.i = i;
        link.onclick = linkListener;
        document.body.appendChild(link);
    }
}

Setiap pautan mengandungi 'i' sendiri, membisikkan identiti uniknya ke dalam tarikan satu klik. Keajaiban Closure, yang kini dikuasai dengan tepat, menimbulkan mantra keajaiban, memperkasakan pautan untuk mengingati takdir mereka sendiri.

Atas ialah kandungan terperinci Mengapa Semua Pengendali Klik Saya Mengembalikan 'Pautan 5'?. 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