जावास्क्रिप्ट में क्लोजर

आइए अब क्लोजर की अवधारणा का अध्ययन करें (closure)। वास्तव में आप इस अवधारणा से पहले से ही परिचित हैं, बस सही शब्दावली जानना बाकी है।

तो, क्लोजर एक फंक्शन है सभी बाहरी वेरिएबल्स के साथ जो इसके लिए सुलभ हैं। या, दूसरे शब्दों में, क्लोजर एक फंक्शन है अपने लेक्सिकल एनवायरनमेंट के साथ।

जावास्क्रिप्ट में अक्सर, "फंक्शन का क्लोजर" कहने पर इसका मतलब स्वयं उस फंक्शन से नहीं, बल्कि उसके बाहरी वेरिएबल्स से होता है। यदि कोई फंक्शन अपने लेक्सिकल एनवायरनमेंट से कोई वेरिएबल प्राप्त करता है, तो कहा जाता है "वेरिएबल क्लोजर से ली गई है"।

आइए उस कोड को याद करें, जो हमने पिछले पाठ में बनाया था:

javascriptfunction test() {
  let num = 1;
  
  return function() {
    console.log(num);
  }
}

let func = test();
func(); // 1 प्रिंट करेगा

इस मामले में यह कहा जा सकता है कि फंक्शन func वेरिएबल num का मान क्लोजर से प्राप्त करता है। यह भी कहा जा सकता है, कि फंक्शन func वेरिएबल num का मान क्लोजर में संग्रहीत करता है।