पाठ 24 / 40
क्लोज़र
जानें कि closures functions को उनका environment कैसे याद रखने देते हैं, private counter उदाहरण के साथ।
क्लोज़र क्या है?
क्लोज़र एक ऐसा फ़ंक्शन है जो अपने बनने की जगह के वेरिएबल याद रखता है, भले ही वह बाहरी फ़ंक्शन खत्म हो चुका हो।
क्लोज़र से बना काउंटर
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 हर कॉल पर रीसेट होता है
- क्योंकि JS पिछला रिटर्न मान कैश करता है
- क्योंकि क्लोज़र कॉल के बीच count को ज़िंदा रखता है
- क्योंकि count global variable है
Answer
क्योंकि क्लोज़र कॉल के बीच count को ज़िंदा रखता है — भीतरी फ़ंक्शन `count` को क्लोज़ ओवर करता है, इसलिए यह `counter()` की अलग-अलग कॉल के बीच बना रहता है।