पाठ 23 / 38
क्लोज़र
वे फ़ंक्शन जो अपना वातावरण याद रखते हैं।
क्लोज़र क्या है?
क्लोज़र एक ऐसा फ़ंक्शन है जो अपने बनने की जगह के वेरिएबल याद रखता है, भले ही वह बाहरी फ़ंक्शन खत्म हो चुका हो।
क्लोज़र से बना काउंटर
makeCounter() की हर कॉल अपना निजी count बनाती है, जिसे केवल लौटाया गया फ़ंक्शन ही छू सकता है।
function makeCounter() {
let count = 0;
return function () {
count += 1;
return count;
};
}
const counter = makeCounter();
console.log(counter()); // 1
console.log(counter()); // 2एक निजी बैकपैक
क्लोज़र को एक बैकपैक समझें जिसे भीतरी फ़ंक्शन साथ ले जाता है — यह बाहरी scope से ज़रूरी वेरिएबल पैक करता है और उन्हें, निजी रूप से, हर जगह अपने साथ रखता है।
त्वरित जाँच: काउंटर उदाहरण में, दूसरी बार counter() बुलाने पर 1 नहीं बल्कि 2 क्यों लौटता है?
- क्योंकि count हर कॉल पर रीसेट होता है
- क्योंकि क्लोज़र कॉल के बीच count को ज़िंदा रखता है
- क्योंकि JS पिछला रिटर्न मान कैश करता है
Answer
क्योंकि क्लोज़र कॉल के बीच count को ज़िंदा रखता है — भीतरी फ़ंक्शन `count` को क्लोज़ ओवर करता है, इसलिए यह `counter()` की अलग-अलग कॉल के बीच बना रहता है।