JavaScript-də Qapalı Funksiyalar
Gəlin indi qapalı funksiya (closure) anlayışını öyrənək. Əslində siz artıq bu anlayışla tanışsınız, qalır yalnız düzgün terminologiyanı öyrənmək.
Beləliklə, qapalı funksiya - özünə əlçatan olan bütün xarici dəyişənlərlə birlikdə bir funksiyadır. Və ya başqa sözlə, qapalı funksiya - öz leksikal mühiti ilə birlikdə bir funksiyadır.
JavaScript-də çox zaman "funksiyanın qapalı funksiyası" deyəndə, həmin funksiyanın özünü deyil, dəqiq onun xarici dəyişənlərini nəzərdə tuturlar. Əgər hansısa funksiya öz leksikal mühitindən bir dəyişən alırsa, onda "dəyişən qapalı funksiyadan götürülür" deyilir.
Əvvəlki dərsdə etdiyimiz kodu xatırlayaq:
function test() {
let num = 1;
return function() {
console.log(num);
}
}
let func = test();
func(); // 1 çap edəcək
Bu halda deyə bilərik ki, func funksiyası
num dəyişəninin qiymətini qapalı funksiyadan alır.
Həmçinin deyə bilərik ki, func funksiyası
num dəyişəninin qiymətini qapalı funksiyada saxlayır.