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
Lepaskan: 2024-10-20 08:53:30
asal
920 orang telah melayarinya

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"
            );
    }
Salin selepas log masuk

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);
  });
});
Salin selepas log masuk

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!

sumber:php
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan