Kes aplikasi tipikal penutupan dalam pembangunan JavaScript
1. Apakah penutupan?
Sebelum kita menyelami kes-kes aplikasi biasa penutupan, kita mesti terlebih dahulu memahami apakah penutupan itu. Penutupan bermakna fungsi boleh mengakses dan mengendalikan pembolehubah di luarnya Walaupun selepas fungsi luaran selesai dilaksanakan, fungsi dalaman masih boleh mengakses dan menggunakan pembolehubah fungsi luaran. Ringkasnya, penutupan ialah gabungan fungsi dan persekitaran rujukan yang berkaitan.
2. Peranan penutupan
Peranan penutupan terutamanya mempunyai aspek berikut:
1 Melindungi pembolehubah
Penutupan boleh mengehadkan skop pembolehubah dan mengelakkan pencemaran global. Dengan merangkum pembolehubah dalam penutupan, hanya fungsi dalaman boleh mengakses dan mengubah suai pembolehubah ini, dan kod luaran tidak boleh mengakses dan mengubah suai pembolehubah secara langsung dalam penutupan.
2. Laksanakan pembolehubah persendirian dan kaedah persendirian
Penutupan boleh mensimulasikan konsep yang serupa dengan pembolehubah persendirian dan kaedah persendirian dalam bahasa pengaturcaraan berorientasikan objek. Dengan mentakrifkan pembolehubah dan kaedah di dalam penutupan, kod luaran tidak boleh mengakses dan memanggil pembolehubah dan kaedah peribadi ini secara langsung.
3. Memanjangkan kitaran hayat pembolehubah
Penutupan boleh memanjangkan kitaran hayat pembolehubah. Apabila fungsi menyelesaikan pelaksanaan, biasanya pembolehubah yang ditakrifkan dalam fungsi akan dimusnahkan. Tetapi jika fungsi itu mengembalikan fungsi dalaman yang membentuk penutupan dan merujuk pembolehubah fungsi luar, maka pembolehubah yang dirujuk ini tidak akan dimusnahkan dan kitaran hayatnya akan dilanjutkan.
3. Kes aplikasi biasa penutupan
1. Kaunter
Penutupan boleh digunakan untuk membuat pembilang mudah dan menyimpan nilai kiraan melalui persekitaran rujukan penutupan. Setiap kali fungsi pembilang dipanggil, nilai kiraan akan dinaikkan sebanyak 1.
function counter() { var count = 0; return function() { count++; console.log(count); } } var increment = counter(); increment(); // 输出 1 increment(); // 输出 2 increment(); // 输出 3
2. Data cache
Penutupan boleh digunakan untuk cache data dan menjimatkan masa pada pengiraan berulang. Keputusan pengiraan disimpan melalui persekitaran rujukan penutupan Jika permintaan pengiraan yang sama ditemui pada masa akan datang, hasil cache akan dikembalikan terus.
function calculateSquare() { var cache = {}; return function(number) { if (number in cache) { return cache[number]; } else { var result = number * number; cache[number] = result; return result; } } } var square = calculateSquare(); console.log(square(5)); // 输出 25 console.log(square(5)); // 从缓存中获取结果,输出 25
3. Pembangunan modular
Penutupan boleh digunakan untuk melaksanakan pembangunan modular, menyembunyikan pembolehubah persendirian dan kaedah persendirian di dalam modul, dan hanya mendedahkan antara muka awam tertentu.
var module = (function() { var privateVariable = 10; function privateMethod() { console.log('私有方法'); } return { publicMethod: function() { console.log('公共方法'); } }; })(); module.publicMethod(); // 输出 "公共方法" module.privateVariable; // 报错,无法访问私有变量 module.privateMethod(); // 报错,无法调用私有方法
Di atas ialah kes aplikasi penutupan biasa dalam pembangunan JavaScript Melalui penutupan, fungsi seperti melindungi pembolehubah, melaksanakan pembolehubah persendirian dan kaedah persendirian, dan memanjangkan kitaran hayat pembolehubah boleh dicapai. Penggunaan penutupan yang munasabah boleh meningkatkan kebolehselenggaraan dan kebolehbacaan kod, dan merupakan bahagian yang sangat diperlukan dalam pembangunan JavaScript.
Atas ialah kandungan terperinci Kes aplikasi biasa dalam pembangunan JavaScript-aplikasi penutupan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!