Rumah hujung hadapan web tutorial js Analisis peristiwa dan kelebihan dan kekurangan kemahiran js closure_javascript

Analisis peristiwa dan kelebihan dan kekurangan kemahiran js closure_javascript

May 16, 2016 pm 03:53 PM
js Kelebihan dan Kekurangan penutupan

Pertama kod:

//函数a
function a()
{
var i=0;
//函数b
function b()
{
alert(++i);
}
return b;
}
//函数c
var c = a();
c();

Salin selepas log masuk

Ciri kod:

1. Fungsi b bersarang di dalam fungsi a; 2. Fungsi a mengembalikan fungsi b.
Apabila fungsi dalaman b fungsi a dalam kod dirujuk oleh pembolehubah c di luar fungsi a, ini dipanggil mencipta penutupan. Kadangkala fungsi b juga boleh dikembalikan oleh fungsi tanpa nama, iaitu fungsi pulangan(){};

Kelebihan: 1. Melindungi keselamatan pembolehubah dalam fungsi dan meningkatkan enkapsulasi 2. Mengekalkan pembolehubah dalam ingatan (menggunakan terlalu banyak akan menjadi kelemahan dan menduduki memori). Sebab mengapa penutupan menduduki sumber ialah apabila fungsi a tamat, pembolehubah i tidak akan dimusnahkan kerana fungsi a berakhir, kerana pelaksanaan b bergantung pada pembolehubah dalam a.
Tidak sesuai untuk senario: fungsi yang mengembalikan penutupan ialah fungsi yang sangat besar

Rangka kerja tipikal untuk penutupan mestilah jquery.

Penutupan ialah ciri utama bahasa JavaScript Kegunaan utama penutupan adalah untuk mereka bentuk kaedah dan pembolehubah peribadi.

Ini lebih jelas apabila membuat rangka kerja Sesetengah kaedah dan atribut hanya digunakan dalam proses logik operasi Anda tidak mahu membenarkan pengubahsuaian luaran atribut ini, jadi anda boleh mereka bentuk penutupan untuk hanya menyediakan akses kaedah.

Kelemahan penutupan ialah ia berada dalam ingatan, yang akan meningkatkan penggunaan memori Penggunaan yang tidak betul boleh menyebabkan kebocoran memori dengan mudah.

Untuk meringkaskan:

Kelebihan:

1. Kesinambungan logik apabila penutupan digunakan sebagai parameter panggilan fungsi lain, ia menghalang anda daripada melepaskan logik semasa dan menulis logik tambahan secara berasingan.

2. Memudahkan memanggil pembolehubah tempatan konteks.
3. Menguatkan enkapsulasi. Lanjutan titik 2 boleh melindungi pembolehubah.

Kelemahan:

Penutupan mempunyai masalah yang sangat serius, iaitu masalah sisa ingatan ini bukan sahaja kerana ia bermastautin dalam ingatan, tetapi yang lebih penting, penggunaan penutupan yang tidak betul akan menyebabkan penjanaan ingatan tidak sah :

var array = [];
function abc() {
var foo = function(){
}
array.push(foo);
return foo;
}
for(var i = 0 ; i < 10000; i ++)
{
abc();
}

alert(array[0] == array[1]);

Salin selepas log masuk
Melalui ujian di atas, kita akan melihat bahawa alamat penutupan logik yang sama yang dijana oleh pelaksanaan abc() sepuluh ribu kali tidak sama, yang bermaksud ia menghasilkan sekumpulan objek Fungsi yang sama, jadi terdapat Kelebihannya ialah anda boleh menggunakan mod kilang untuk menjana fungsi untuk digunakan Walau bagaimanapun, jika anda secara tidak sengaja menggunakan penutupan sebagai logik biasa, sampah memori pasti akan berlaku. Ia mungkin lebih mudah difahami jika anda menukar sintaks:

var foo = new Function();

Salin selepas log masuk
Jadi mengenai penutupan, setakat kebiasaan saya sendiri, saya tidak menggunakannya jika saya boleh Jika ia mesti digunakan, maka cari cara untuk memastikan bilangan objek penutupan kecil atau unik.

Di atas adalah keseluruhan kandungan artikel ini, saya harap anda semua menyukainya.

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)

Disyorkan: Projek pengesanan dan pengecaman muka sumber terbuka JS yang sangat baik Disyorkan: Projek pengesanan dan pengecaman muka sumber terbuka JS yang sangat baik Apr 03, 2024 am 11:55 AM

Teknologi pengesanan dan pengecaman muka adalah teknologi yang agak matang dan digunakan secara meluas. Pada masa ini, bahasa aplikasi Internet yang paling banyak digunakan ialah JS Melaksanakan pengesanan muka dan pengecaman pada bahagian hadapan Web mempunyai kelebihan dan kekurangan berbanding dengan pengecaman muka bahagian belakang. Kelebihan termasuk mengurangkan interaksi rangkaian dan pengecaman masa nyata, yang sangat memendekkan masa menunggu pengguna dan meningkatkan pengalaman pengguna termasuk: terhad oleh saiz model, ketepatannya juga terhad. Bagaimana untuk menggunakan js untuk melaksanakan pengesanan muka di web? Untuk melaksanakan pengecaman muka di Web, anda perlu biasa dengan bahasa dan teknologi pengaturcaraan yang berkaitan, seperti JavaScript, HTML, CSS, WebRTC, dll. Pada masa yang sama, anda juga perlu menguasai visi komputer yang berkaitan dan teknologi kecerdasan buatan. Perlu diingat bahawa kerana reka bentuk bahagian Web

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.

Mesti membaca sebelum membeli sistem: Analisis kelebihan dan kekurangan Win11 dan Win10 Mesti membaca sebelum membeli sistem: Analisis kelebihan dan kekurangan Win11 dan Win10 Mar 28, 2024 pm 01:33 PM

Dalam era maklumat hari ini, komputer peribadi memainkan peranan penting sebagai alat yang sangat diperlukan dalam kehidupan seharian kita. Sebagai salah satu perisian teras komputer, sistem pengendalian mempengaruhi pengalaman penggunaan dan kecekapan kerja kami. Di pasaran, sistem pengendalian Windows Microsoft sentiasa menduduki kedudukan yang dominan, dan kini orang ramai menghadapi pilihan antara Windows 11 terkini dan Windows 10 lama. Bagi pengguna biasa, apabila memilih sistem pengendalian, mereka tidak hanya melihat nombor versi, tetapi juga memahami kelebihan dan kekurangannya.

Apakah kelebihan dan kekurangan templat? Apakah kelebihan dan kekurangan templat? May 08, 2024 pm 03:51 PM

Templat: Kebaikan dan Keburukan Templat ialah teknik pengaturcaraan yang berkuasa yang membolehkan anda membuat blok kod yang boleh digunakan semula. Ia menawarkan pelbagai kelebihan, tetapi juga beberapa kelemahan. Kelebihan: Kebolehgunaan Semula Kod: Templat membolehkan anda mencipta kod biasa yang boleh digunakan semula sepanjang aplikasi anda, mengurangkan usaha pertindihan dan penyelenggaraan. Ketekalan: Templat memastikan bahawa coretan kod dilaksanakan dengan cara yang sama di lokasi yang berbeza, meningkatkan ketekalan dan kebolehbacaan kod. Kebolehselenggaraan: Perubahan pada templat ditunjukkan secara serentak dalam semua kod yang menggunakannya, memudahkan penyelenggaraan dan kemas kini. Kecekapan: Templat menjimatkan masa dan usaha kerana anda tidak perlu menulis kod yang sama berulang kali. Fleksibiliti: Templat membolehkan anda membuat blok kod yang boleh dikonfigurasikan yang boleh disesuaikan dengan mudah kepada keperluan aplikasi yang berbeza. kelemahan

Apakah kelebihan dan kekurangan cara Java Servlets berfungsi? Apakah kelebihan dan kekurangan cara Java Servlets berfungsi? Apr 16, 2024 pm 03:18 PM

JavaServlet ialah kelas Java yang digunakan untuk membina halaman web dinamik dan berfungsi sebagai jambatan antara klien dan pelayan. Prinsip kerja: menerima permintaan, memulakan Servlet, memproses permintaan, menjana respons dan menutup Servlet. Kelebihan: Mudah alih, berskala, selamat dan mudah digunakan. Kelemahan: Overhed, gandingan dan pengurusan negeri. Kes praktikal: Cipta Servlet ringkas untuk memaparkan "Hello, Servlet!"

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.

Perbandingan kelebihan dan kekurangan rangka kerja PHP: Mana satu yang lebih baik? Perbandingan kelebihan dan kekurangan rangka kerja PHP: Mana satu yang lebih baik? Jun 04, 2024 pm 03:36 PM

Pilihan rangka kerja PHP bergantung pada keperluan projek dan kemahiran pembangun: Laravel: kaya dengan ciri dan komuniti aktif, tetapi mempunyai keluk pembelajaran yang curam dan overhed prestasi tinggi. CodeIgniter: ringan dan mudah dipanjangkan, tetapi mempunyai fungsi terhad dan kurang dokumentasi. Symfony: Bermodul, komuniti yang kuat, tetapi kompleks, isu prestasi. ZendFramework: Gred perusahaan, stabil dan boleh dipercayai, tetapi besar dan mahal untuk dilesenkan. Langsing: rangka kerja mikro, pantas, tetapi dengan fungsi terhad dan keluk pembelajaran yang curam.

See all articles