JavaScript'те жабышуулар
Келгиле, азыр жабышуу (closure) түшүнүгүн үйрөнөлү. Чынында эле, сиз бул түшүнүк менен таанышсыз, өзүңүзгө ылайык терминдерди билүү гана калды.
Ошентип, жабышуу - бул функция ага жеткиликтүү болгон бардык сырткы өзгөрмөлөр менен бирге. Же башкача айтканда, жабышуу - бул функция өзүнүн лексикалык чөйрөсү менен бирге.
JavaScript'те көбүнчө, "функциянын жабышуусу" деп айтканда, өзү функцияны эмес, анын так сырткы өзгөрмөлөрүн көздөйт. Эгерде кандайдыр бир функция өзүнүн лексикалык чөйрөсүнөн өзгөрмө алса, анда "өзгөрмө жабышуудан алынат" деп айтылат.
Мурунку сабакта биз жасаган кодду эстейли:
function test() {
let num = 1;
return function() {
console.log(num);
}
}
let func = test();
func(); // 1 деп чыгарат
Бул учурда, func функциясы num өзгөрмөсүнүн маанисин жабышуудан аларын айтууга болот. Ошондой эле, func функциясы num өзгөрмөсүнүн маанисин жабышууда сактайрын да айтууга болот.