Penutupan adalah sesuatu untuk menyelesaikan berbagai masalah dengan cara yang elegan. Sebenarnya, dalam bahasa pemrograman di mana tidak ada penutupan, teknik dibuat untuk mengimplementasikan fungsi yang serupa.
Pikirkan functors di C ++ atau Runnables di Java. Mereka hanya teknik yang memungkinkan fungsionalitas mirip dengan penutupan. Semacam «penutupan manual».
Penutupan semakin populer karena diintegrasikan ke dalam bahasa populer: Javascript berkembang karena aplikasi online (seperti google doc misalnya), C # mengimplementasikannya, PHP menerapkannya sejak 5.3, dan seterusnya.
Sekarang penutupan tersedia dalam semakin banyak teknologi, menjadi sangat mudah bahwa semakin banyak orang tertarik pada mereka.
Jadi sekarang, apa itu penutupan? Ini cukup sederhana. Penutupan adalah fungsi dan konteks untuk menjalankannya di dalam. Ini dimanipulasi sebagai objek. Mengapa ini berguna? Ini berguna untuk menghubungkan kode Anda sendiri ke dalam kode yang ada.
Berikut adalah dua situasi umum yang mengharuskan: ketika tindakan dikelola oleh sepotong kode lain, seperti dalam multithreading dengan kumpulan utas, atau ketika suatu tindakan harus dijalankan pada peristiwa yang dipilih (sering digunakan dalam javascript untuk UI).