Rumah hujung hadapan web tutorial js Contoh penggunaan penutupan Javascript analysis_javascript kemahiran

Contoh penggunaan penutupan Javascript analysis_javascript kemahiran

May 16, 2016 pm 04:18 PM
javascript penggunaan penutupan

Artikel ini menganalisis konsep dan penggunaan penutupan Javascript dengan contoh. Kongsikan dengan semua orang untuk rujukan anda. Butirannya adalah seperti berikut:

Apabila bercakap tentang penutupan, semua orang pasti pernah mendengarnya. Ini adalah pemahaman mudah saya.
Sejujurnya, tidak banyak senario di mana penutupan sebenarnya ditulis secara manual dalam kerja harian, tetapi rangka kerja dan komponen pihak ketiga yang digunakan dalam projek lebih kurang menggunakan penutupan.
Oleh itu, adalah sangat perlu untuk memahami penutupan. Haha...

1. Apakah itu penutupan

Ringkasnya, ia adalah fungsi yang boleh membaca pembolehubah dalaman fungsi lain.
Disebabkan oleh ciri-ciri skop pembolehubah JS, pembolehubah dalaman tidak boleh diakses dari luar, tetapi pembolehubah luaran boleh diakses dari dalam.

2. Senario penggunaan

1. Laksanakan ahli persendirian.
2. Lindungi ruang nama untuk mengelakkan pencemaran pembolehubah global.
3. Pembolehubah cache.

Mari kita lihat contoh enkapsulasi dahulu:

Salin kod Kod adalah seperti berikut:
var person = function () {
// Skop pembolehubah berada di dalam fungsi dan tidak boleh diakses dari luar
var name = "default";

kembali {
          getName: function () {
              kembalikan nama;
},
setName: function (newName) {
              nama = newName;
}
}
}();

console.log(person.name); // Akses langsung, hasilnya: tidak ditentukan
console.log(person.getName()); // Hasilnya ialah: lalai
console.log(person.setName("langjt"));
console.log(person.getName()); // Hasilnya ialah: langjt

Lihat penutupan yang biasa digunakan dalam gelung untuk menyelesaikan masalah merujuk pembolehubah luaran:

Salin kod Kod adalah seperti berikut:
var aLi = document.getElementsByTagName('li');
untuk (var i=0, len=aLi.length; i aLi[i].onclick = function() {
alert(i); // Tidak kira elemen
  • mana yang diklik, nilai yang muncul ialah len, menunjukkan bahawa nilai i di sini adalah sama dengan nilai i yang dicetak selepas untuk.
    };
    }

  • Selepas menggunakan penutupan:
    Salin kod Kod adalah seperti berikut:
    var aLi = document.getElementsByTagName('li');
    untuk (var i=0, len=aLi.length; i aLi[i].onclick = (fungsi(i) {
    Kembalikan fungsi() {
    alert(i); // Klik elemen
  • dan subskrip yang sepadan akan muncul.
    }
    })(i);
    }
  • 3. Langkah berjaga-jaga

    1. Kebocoran memori

    Memandangkan penutupan menyebabkan semua pembolehubah dalam fungsi disimpan dalam ingatan, yang menggunakan banyak memori, penutupan tidak boleh disalahgunakan, jika tidak, ia akan menyebabkan masalah prestasi pada halaman web.
    Contohnya:

    Salin kod Kod adalah seperti berikut:
    function foo() {
    var oDiv = document.getElementById(‘J_DIV’);
    var id = oDiv.id;
    oDiv.onclick = function() {
    // alert(oDiv.id); Terdapat rujukan bulat di sini, dan oDiv masih dalam ingatan selepas halaman versi rendah IE ditutup. Jadi cache jenis primitif dan bukannya objek apabila boleh.
    alert(id);
    };
    oDiv = null;
    }

    2. Penamaan pembolehubah

    Jika nama pembolehubah bagi fungsi dalaman dan nama pembolehubah bagi fungsi luaran adalah sama, maka fungsi dalaman tidak lagi boleh menunjuk kepada pembolehubah dengan nama fungsi luaran yang sama.
    Contohnya:

    Salin kod Kod adalah seperti berikut:
    function foo(num) {
    kembalikan fungsi(bilangan) {
    console.log(bilangan);
    }
    }
    var f = foo baharu(9);
    f(); // undefined

    Tatsächlich besteht die obige Verwendung, der Fachbegriff wird Funktionscurrying genannt, darin, eine Funktion, die mehrere Parameter akzeptiert, in eine Funktion umzuwandeln, die einen einzelnen Parameter (den ersten Parameter der ursprünglichen Funktion) akzeptiert und die verbleibenden Parameter zurückgibt . Neue Funktionstechnologie, die Parameter entgegennimmt und ein Ergebnis zurückgibt. Im Wesentlichen nutzt es auch die Caching-Funktion von Verschlüssen, wie zum Beispiel:

    Code kopieren Der Code lautet wie folgt:
    var adder = function(num) {
    Rückgabefunktion(y) {
              return num y;
    };
    };

    var inc = adder(1);
    var dec = adder(-1);
    //inc, dec sind jetzt zwei neue Funktionen, deren Funktion darin besteht, den übergebenen Parameterwert (/‐)1
    umzuwandeln alarm(inc(99));//100
    alarm(dec(101));//100
    alarm(adder(100)(2));//102
    alarm(adder(2)(100));//102

    Ein weiteres Beispiel ist der seaJS-Quellcode von Ali Yubo:

    Code kopieren Der Code lautet wie folgt:
    /**
     * util-lang.js – Die minimale Spracherweiterung
     */
    Funktion isType(type) {
    Rückgabefunktion(obj) {
    Return {}.toString.call(obj) == "[object " type "]"
    }
    }

    var isObject = isType("Object");
    var isString = isType("String");

    Ich hoffe, dass dieser Artikel für das JavaScript-Programmierdesign aller hilfreich sein wird.

    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

    Alat AI Hot

    Undresser.AI Undress

    Undresser.AI Undress

    Apl berkuasa AI untuk mencipta foto bogel yang realistik

    AI Clothes Remover

    AI Clothes Remover

    Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

    Undress AI Tool

    Undress AI Tool

    Gambar buka pakaian secara percuma

    Clothoff.io

    Clothoff.io

    Penyingkiran pakaian AI

    AI Hentai Generator

    AI Hentai Generator

    Menjana ai hentai secara percuma.

    Artikel Panas

    R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
    2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
    Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
    1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
    Muzium Dua Point: Semua Pameran dan Di Mana Mencari Mereka
    1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

    Alat panas

    Notepad++7.3.1

    Notepad++7.3.1

    Editor kod yang mudah digunakan dan percuma

    SublimeText3 versi Cina

    SublimeText3 versi Cina

    Versi Cina, sangat mudah digunakan

    Hantar Studio 13.0.1

    Hantar Studio 13.0.1

    Persekitaran pembangunan bersepadu PHP yang berkuasa

    Dreamweaver CS6

    Dreamweaver CS6

    Alat pembangunan web visual

    SublimeText3 versi Mac

    SublimeText3 versi Mac

    Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

    Apakah maksud penutupan dalam ungkapan lambda C++? Apakah maksud penutupan dalam ungkapan lambda C++? Apr 17, 2024 pm 06:15 PM

    Dalam C++, penutupan ialah ungkapan lambda yang boleh mengakses pembolehubah luaran. Untuk membuat penutupan, tangkap pembolehubah luar dalam ungkapan lambda. Penutupan memberikan kelebihan seperti kebolehgunaan semula, penyembunyian maklumat dan penilaian malas. Ia berguna dalam situasi dunia sebenar seperti pengendali acara, di mana penutupan masih boleh mengakses pembolehubah luar walaupun ia dimusnahkan.

    Bagaimana untuk melaksanakan penutupan dalam ungkapan C++ Lambda? Bagaimana untuk melaksanakan penutupan dalam ungkapan C++ Lambda? Jun 01, 2024 pm 05:50 PM

    Ungkapan C++ Lambda menyokong penutupan, yang menyimpan pembolehubah skop fungsi dan menjadikannya boleh diakses oleh fungsi. Sintaks ialah [capture-list](parameters)->return-type{function-body}. capture-list mentakrifkan pembolehubah untuk ditangkap Anda boleh menggunakan [=] untuk menangkap semua pembolehubah tempatan mengikut nilai, [&] untuk menangkap semua pembolehubah tempatan melalui rujukan, atau [variable1, variable2,...] untuk menangkap pembolehubah tertentu. Ungkapan Lambda hanya boleh mengakses pembolehubah yang ditangkap tetapi tidak boleh mengubah suai nilai asal.

    Apakah kelebihan dan kekurangan penutupan dalam fungsi C++? Apakah kelebihan dan kekurangan penutupan dalam fungsi C++? Apr 25, 2024 pm 01:33 PM

    Penutupan ialah fungsi bersarang yang boleh mengakses pembolehubah dalam skop fungsi luar Kelebihannya termasuk pengkapsulan data, pengekalan keadaan dan fleksibiliti. Kelemahan termasuk penggunaan memori, kesan prestasi dan kerumitan penyahpepijatan. Selain itu, penutupan boleh mencipta fungsi tanpa nama dan menyerahkannya kepada fungsi lain sebagai panggilan balik atau hujah.

    Kesan penunjuk fungsi dan penutupan pada prestasi Golang Kesan penunjuk fungsi dan penutupan pada prestasi Golang Apr 15, 2024 am 10:36 AM

    Kesan penunjuk fungsi dan penutupan pada prestasi Go adalah seperti berikut: Penunjuk fungsi: Lebih perlahan sedikit daripada panggilan langsung, tetapi meningkatkan kebolehbacaan dan kebolehgunaan semula. Penutupan: Biasanya lebih perlahan, tetapi merangkumi data dan tingkah laku. Kes praktikal: Penunjuk fungsi boleh mengoptimumkan algoritma pengisihan dan penutupan boleh mencipta pengendali acara, tetapi ia akan membawa kerugian prestasi.

    Bagaimanakah penutupan dilaksanakan di Jawa? Bagaimanakah penutupan dilaksanakan di Jawa? May 03, 2024 pm 12:48 PM

    Penutupan dalam Java membenarkan fungsi dalaman mengakses pembolehubah skop luar walaupun fungsi luar telah keluar. Dilaksanakan melalui kelas dalaman tanpa nama, kelas dalam memegang rujukan kepada kelas luar dan memastikan pembolehubah luar aktif. Penutupan meningkatkan fleksibiliti kod, tetapi anda perlu sedar tentang risiko kebocoran memori kerana rujukan kepada pembolehubah luaran oleh kelas dalaman tanpa nama memastikan pembolehubah tersebut hidup.

    Panggilan berantai dan penutupan fungsi PHP Panggilan berantai dan penutupan fungsi PHP Apr 13, 2024 am 11:18 AM

    Ya, kesederhanaan dan kebolehbacaan kod boleh dioptimumkan melalui panggilan berantai dan penutupan: panggilan berantai memaut fungsi panggilan ke antara muka yang lancar. Penutupan mewujudkan blok kod yang boleh digunakan semula dan pembolehubah akses di luar fungsi.

    Penggunaan permintaan POST yang betul dalam PHP Penggunaan permintaan POST yang betul dalam PHP Mar 27, 2024 pm 03:15 PM

    Penggunaan permintaan POST dalam PHP adalah operasi biasa dalam pembangunan laman web Data boleh dihantar ke pelayan melalui permintaan POST, seperti data borang, maklumat pengguna, dll. Penggunaan permintaan POST yang betul boleh memastikan keselamatan dan ketepatan data Perkara berikut akan memperkenalkan penggunaan permintaan POST yang betul dalam PHP dan memberikan contoh kod tertentu. 1. Prinsip asas permintaan POST dalam PHP Dalam PHP, data yang dihantar melalui kaedah POST boleh diperoleh dengan menggunakan pembolehubah global $_POST. Kaedah POST menukar nombor borang menjadi

    Ringkasan kelebihan dan kekurangan fungsi dan penutupan tanpa nama golang Ringkasan kelebihan dan kekurangan fungsi dan penutupan tanpa nama golang May 05, 2024 am 09:54 AM

    Fungsi tanpa nama adalah ringkas dan tanpa nama, tetapi mempunyai kebolehbacaan yang lemah dan kesukaran dalam penyahpepijatan boleh merangkum data dan mengurus keadaan, tetapi boleh menyebabkan penggunaan memori dan rujukan bulat. Kes praktikal: Fungsi tanpa nama boleh digunakan untuk pemprosesan berangka yang mudah, dan penutupan boleh melaksanakan pengurusan negeri.

    See all articles