JavaScript में closures (क्लोज़र्स) कैसे काम करते हैं? उदाहरणों के साथ समझाएं
सभी को नमस्कार! मैंने अभी JavaScript सीखना शुरू किया है और मैं closures (क्लोज़र्स) के विषय को समझ नहीं पा रहा हूँ। मैंने बहुत सारे लेख पढ़े, लेकिन फिर भी भ्रमित हूँ।
यहाँ एक उदाहरण है जो मुझे भ्रमित करता है। मैं एक फ़ंक्शन बनाता हूँ जो दूसरा फ़ंक्शन लौटाता है:
```javascript
function createCounter() {
let count = 0;
return function() {
count++;
return count;
};
}
const counter1 = createCounter();
const counter2 = createCounter();
console.log(counter1()); // 1
console.log(counter1()); // 2
console.log(counter2()); // 1 — 3 क्यों नहीं?
```
`counter1` और `counter2` अलग-अलग काउंटर की तरह क्यों व्यवहार करते हैं? मैंने सोचा था कि `count` वेरिएबल साझा होगा। और JavaScript `createCounter` फ़ंक्शन के समाप्त होने के बाद `count` के मान को कैसे "याद" रखता है? आमतौर पर, फ़ंक्शन से बाहर निकलने पर लोकल वेरिएबल नष्ट हो जाते हैं।
कृपया, closures के काम करने के तंत्र को सरल शब्दों में समझाएं। वे वेरिएबल्स के संदर्भ (references) कैसे संग्रहीत करते हैं? और वास्तविक प्रोजेक्ट्स में इसका उपयोग कहाँ हो सकता है?