JavaScript да замыканиялар
Ҳозир замыкание (closure) тушунчасини ўрганамиз. Аслида сиз бу тушунча билан танишсиз, факат тўғри терминологияни билиш қолди.
Шунинг учун, замыкание - бу функция ва унга кирадиган барча ташки ўзгарувчилар билан бирга. Йки бошқа сўзлар билан айтганда, замыкание - бу функция ва унинг лексик муҳити билан бирга.
JavaScript да кўпинча, "функциянинг замыканиеси" дейишда, ўзи ушбу функцияни эмас, балки айни унгинг ташки ўзгарувчиларини назарда тутадилар. Агар қандайдир функция ўз лексик муҳитидан ўзгарувчи олса, у ҳолда "ўзгарувчи замыканиедан олинади" дейилади.
Олдинги дарсда биз яратган кодни эслаймиз:
function test() {
let num = 1;
return function() {
console.log(num);
}
}
let func = test();
func(); // 1 ни кўрсатади
Бундай ҳолда функция func ўзгарувчининг қийматини
num замыканиедан олганини айтиш мумкин. Шунингдек,
функция func ўзгарувчининг қийматини num
замыканиеда сақлайди, дейиш мумкин.