ჯავასკრიპტის ჩამკეტები
მოდით ახლა შევისწავლოთ ჩამკეტის (closure) ცნება. სინამდვილეში თქვენ უკვე იცნობთ ამ ცნებას, დარჩა მხოლოდ სწორი ტერმინოლოგიის გაგება.
ასე რომ, ჩამკეტი არის ფუნქცია ყველა იმ გარე ცვლადთან ერთად, რომელიც მას ხელმისაწვდომია. ან, სხვა სიტყვებით, ჩამკეტი არის ფუნქცია თავის ლექსიკურ გარემოსთან ერთად.
ჯავასკრიპტში, ყველაზე ხშირად, როდესაც ამბობენ "ფუნქციის ჩამკეტი", გულისხმობენ არა თავად ფუნქციას, არამედ მის გარე ცვლადებს. თუ რომელიმე ფუნქცია იღებს ცვლადს თავისი ლექსიკური გარემოდან, მაშინ ამბობენ "ცვლადი აღებულია ჩამკეტიდან".
გავიხსენოთ კოდი, რომელიც წინა გაკვეთილზე შევქმენით:
function test() {
let num = 1;
return function() {
console.log(num);
}
}
let func = test();
func(); // გამოიტანს 1-ს
ამ შემთხვევაში შეიძლება ითქვას, რომ ფუნქცია
func იღებს ცვლადის num
მნიშვნელობას ჩამკეტიდან. ასევე შეიძლება ითქვას,
რომ ფუნქცია func ინახავს ცვლადის num
მნიშვნელობას ჩამკეტში.