Rumah >hujung hadapan web >tutorial js >Apabila Menggelung dalam Penutupan JavaScript, Bagaimana untuk Mengekalkan Akses kepada Nilai Pembolehubah Unik?

Apabila Menggelung dalam Penutupan JavaScript, Bagaimana untuk Mengekalkan Akses kepada Nilai Pembolehubah Unik?

Susan Sarandon
Susan Sarandonasal
2024-10-20 08:53:30922semak imbas

When Looping in JavaScript Closures, How to Maintain Access to Unique Variable Values?

Mengakses Pembolehubah Luar dalam Gelung daripada Penutupan Javascript

Dalam JavaScript, apabila menggunakan penutupan, pembolehubah dalam gelung dirujuk oleh penuding . Ini bermakna apabila gelung selesai, nilai terakhir pembolehubah digunakan, yang membawa kepada percanggahan dalam kefungsian.

Untuk menangani masalah ini, teknik yang dipanggil penutupan boleh digunakan. Penutupan pada dasarnya adalah fungsi yang mengembalikan fungsi. Dengan merangkum pembolehubah secara berbeza menggunakan penutupan, kami boleh memastikan bahawa setiap lelaran gelung merujuk kepada nilai pembolehubah tersendiri.

Pertimbangkan kod berikut:

    for (var i in this.items) {
            var item = this.items[i];
            $("#showcasenav").append("<li id=\"showcasebutton_"+item.id+"\"><img src=\"/images/showcase/icon-"+item.id+".png\" /></li>");
            $("#showcasebutton_"+item.id).click( 
                // create an anonymous function that will scope "item"
                (function(item) {
                   // that returns our function 
                   return function() {
                    alert(item.id);
                    self.switchto(item.id);
                   };
                })(item) // immediately call it with "item"
            );
    }

Dalam ini kod yang diubah suai, fungsi tanpa nama dicipta dalam setiap lelaran gelung yang mengambil nilai semasa item sebagai hujah. Ini memastikan bahawa setiap pengendali klik mempunyai contoh tersendiri bagi pembolehubah item.

Sebagai alternatif, fungsi pembantu $.each() jQuery boleh digunakan untuk memudahkan kod dan menghapuskan keperluan untuk penutupan:

$.each(this.items,function(i, item) {
  $("#showcasenav").append("<li id=\"showcasebutton_"+item.id+"\"><img src=\"/images/showcase/icon-"+item.id+".png\" /></li>");
  $("#showcasebutton_"+item.id).click(function() {
    alert(item.id);
    self.switchto(item.id);
  });
});

Dengan menggunakan penutupan atau jQuery's $.each(), kami boleh memastikan bahawa setiap lelaran gelung mempunyai akses kepada nilai unik pembolehubahnya sendiri, menyelesaikan isu mengakses pembolehubah luar di luar gelung.

Atas ialah kandungan terperinci Apabila Menggelung dalam Penutupan JavaScript, Bagaimana untuk Mengekalkan Akses kepada Nilai Pembolehubah Unik?. 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