Clouther nima?
Clouther – bu funksiya va u ishlayotgan lexical scope (ya’ni, o‘zining tashqi o‘zgaruvchilari bilan birga saqlanadigan muhit) yig‘indisidir. Oddiy qilib aytganda:
Funksiya o‘zining tashqi (parent) funksiyasidagi o‘zgaruvchilarni eslab qoladi va ishlata oladi, hatto parent funksiya bajarilib bo‘lgandan keyin ham.
Oddiy misol:
`
`
function outerFunction() {
let count = 0;
function innerFunction() {
count++;
console.log(count);
}
return innerFunction;
}
`
`
const counter = outerFunction();
counter(); // 1
counter(); // 2
counter(); // 3
Tushuntirish:
outerFunction da count degan o‘zgaruvchi bor.
innerFunction esa shu count ni ishlatyapti.
Biz outerFunction ni chaqirganimizda, u innerFunction ni qaytaradi.
Endi outerFunction bajarilib bo‘ldi, lekin closure tufayli innerFunction count ni eslab qoladi.
Nima uchun kerak?
Closures juda ko‘p joyda ishlatiladi:
Data encapsulation (ma’lumotni yashirish)
O‘zgaruvchilarni tashqaridan himoya qilish uchun.
Private o‘zgaruvchilar yaratishda.
Callback va Event Listener lar bilan ishlashda.
Module pattern va functional programming da keng ishlatiladi.
Real hayotga o‘xshatib tushuntirish
Tasavvur qil: sen kofe buyurtma qilding (outerFunction). Baristaga sening buyurtmang esda qoladi (closure). Endi, qachon kelsang ham, u seni buyurtmangni biladi (innerFunction), garchi buyurtma jarayoni tugagan bo‘lsa ham.
Top comments (0)