परिचय
जावास्क्रिप्ट में क्लोजर हमें आउटर फ़ंक्शन के स्कोप को इनर फ़ंक्शन से एक्सेस करने की अनुमति देता है, यहां तक कि आउटर फ़ंक्शन के निष्पादित होने और वापस लौटने के बाद भी। इसका मतलब है कि इनर फ़ंक्शन के पास हमेशा आउटर फ़ंक्शन के वेरिएबल्स तक पहुंच होगी।
उदाहरण
निम्न कोड जावास्क्रिप्ट में क्लोजर्स के लिए है:
<!DOCTYPE html> <html lang="hi"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>जावास्क्रिप्ट क्लोजर</title> <style> body { font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; } .result { font-size: 20px; font-weight: 500; } </style> </head> <body> <h1>जावास्क्रिप्ट क्लोजर्स</h1> <div style="color: green;" class="result"></div> <button class="Btn">यहाँ क्लिक करें</button> <h3> क्लोजर का उपयोग करके दो संख्याएँ जोड़ने के लिए ऊपर दिए गए बटन पर क्लिक करें </h3> <script> const resEle = document.querySelector(".result"); // आउटर फ़ंक्शन function add(num) { // इनर फ़ंक्शन (क्लोजर) return function add1(num1) { resEle.innerHTML += `${num} + ${num1} = ${num + num1}<br>`; }; } document.querySelector(".Btn").addEventListener("click", () => { const storeAdd = add(99); // add(99) एक फ़ंक्शन लौटाता है जो num=99 को याद रखता है storeAdd(44); // उस फ़ंक्शन को 44 के साथ कॉल करता है }); </script> </body> </html>
आउटपुट
उपरोक्त कोड निम्न आउटपुट उत्पन्न करेगा:

'यहाँ क्लिक करें' बटन पर क्लिक करने पर:

क्लोजर्स के व्यावहारिक उपयोग
- डेटा एनकैप्सुलेशन - प्राइवेट वेरिएबल्स बनाना
- फ़ंक्शन फैक्ट्रीज़ - प्रीसेट कॉन्फ़िगरेशन के साथ फ़ंक्शन जनरेट करना
- इवेंट हैंडलर्स - एसिंक्रोनस कोड में स्टेट बनाए रखना
- मेमोइजेशन - महंगे फ़ंक्शन कॉल्स के परिणामों को कैश करना
मुख्य अवधारणा
एक क्लोजर तब बनता है जब एक इनर फ़ंक्शन अपने आउटर फ़ंक्शन के लेक्सिकल स्कोप के वेरिएबल्स को रेफरेंस करता है, भले ही आउटर फ़ंक्शन वापस लौट चुका हो।