JavaScript-da Ýapyk Funkksiýalar
Indi ýapyk funksiýa (closure) düşünjesini öwreneli. Aslynda siz bu düşünje bilen eýýäm tanyş, ýöne dogry terminologiýany öwrenmek galýar.
Şeýlelik bilen, ýapyk funksiýa - bu ähli daşarky üýtgeýänler bilen birlikdeki funksiýa, olar oňa elýeterlidir. Ýa-da, başga sözler bilen aýdylanda, ýapyk funksiýa - bu öz leksik daşy bilen birlikdäki funksiýa.
JavaScript-da köplenç, "funksiýanyň ýapyk funksiýasy" diýilende, şol funksiýanyň özi däl-de, onuň daşarky üýtgeýänleri göz öňünde tutulýar. Eger bir funksiýa öz leksik daşyndan bir üýtgeýjäni alyp ýörse, onda "üýtgeýjäň ýapyk funksiýadan alyndygy" diýilýär.
Öňki sapakda eden kodymyzy ýatlayalyň:
function test() {
let num = 1;
return function() {
console.log(num);
}
}
let func = test();
func(); // 1 görkezer
Bu ýagdaýda, func funksiýasynyň num
üýtgeýjäniň bahasyny ýapyk funksiýadan alýandygyny aýtmak bolýar.
Şeýle hem, func funksiýasynyň num üýtgeýjäniň
bahasyny ýapyk funksiýada saklaýandygyny aýtmak bolýar.