जावास्क्रिप्ट एक बहुमुखी और शक्तिशाली भाषा है, और इसकी सबसे दिलचस्प विशेषताओं में से एक क्लोजर की अवधारणा है। क्लोजर यह समझने के लिए मौलिक है कि जावास्क्रिप्ट फ़ंक्शन कैसे काम करते हैं, खासकर स्कोप और वेरिएबल एक्सेस के संबंध में। इस ट्यूटोरियल में, हम जानेंगे कि क्लोजर क्या हैं, वे कैसे काम करते हैं, और इस अवधारणा में महारत हासिल करने में आपकी मदद करने के लिए व्यावहारिक उदाहरण प्रदान करेंगे।
क्लोजर एक ऐसा फ़ंक्शन है जो अपने शाब्दिक दायरे तक पहुंच बनाए रखता है, तब भी जब फ़ंक्शन उस दायरे के बाहर निष्पादित होता है। सरल शब्दों में, क्लोजर एक फ़ंक्शन को उस वातावरण को "याद रखने" की अनुमति देता है जिसमें इसे बनाया गया था।
बंद कई कारणों से आवश्यक हैं:
डेटा गोपनीयता: क्लोजर आपको निजी वेरिएबल बनाने में सक्षम बनाता है जिन्हें फ़ंक्शन के बाहर से एक्सेस नहीं किया जा सकता है।
स्टेटफुल फ़ंक्शंस: वे फ़ंक्शंस को कॉल के बीच स्थिति बनाए रखने की अनुमति देते हैं।
कार्यात्मक प्रोग्रामिंग: कार्यात्मक प्रोग्रामिंग में क्लोजर एक प्रमुख अवधारणा है, जो उच्च-क्रम के कार्यों और करीइंग को सक्षम बनाता है।
क्लोजर को समझने के लिए, आइए एक बुनियादी उदाहरण से शुरू करें:
function outerFunction() { let outerVariable = 'I am outside!'; function innerFunction() { console.log(outerVariable); } return innerFunction; } const myClosure = outerFunction(); myClosure(); // Output: I am outside!
उपरोक्त उदाहरण में:
outerFunction एक वेरिएबल externalVariable बनाता है और इनरफंक्शन को परिभाषित करता है।
इनरफंक्शन बाहरी वेरिएबल तक पहुंचता है, जो इसके शाब्दिक दायरे में है।
आउटरफंक्शनइनरफंक्शन लौटाता है, एक क्लोजर बनाता है।
जब myClosure को कॉल किया जाता है, तब भी इसकी बाहरी वेरिएबल तक पहुंच होती है, भले ही बाहरी फ़ंक्शन का निष्पादन समाप्त हो गया हो।
1. निजी चर बनाना
क्लोजर का उपयोग निजी वेरिएबल्स बनाने के लिए किया जा सकता है जिन्हें केवल विशिष्ट कार्यों के माध्यम से ही एक्सेस या संशोधित किया जा सकता है।
function createCounter() { let count = 0; return { increment: function() { count ; return count; }, decrement: function() { count--; return count; }, getCount: function() { return count; } }; } const counter = createCounter(); console.log(counter.increment()); // 1 console.log(counter.increment()); // 2 console.log(counter.decrement()); // 1 console.log(counter.getCount()); // 1
इस उदाहरण में, काउंट एक निजी वैरिएबल है जिसे केवल इंक्रीमेंट, डिक्रीमेंट और गेटकाउंट विधियों के माध्यम से एक्सेस और संशोधित किया जा सकता है।
2. गतिशील रूप से फ़ंक्शन बनाना
क्लोजर आपको विशिष्ट डेटा के साथ गतिशील रूप से फ़ंक्शन बनाने की अनुमति देता है।
function greetingGenerator(greeting) { return function(name) { return `${greeting}, ${name}!`; }; } const sayHello = greetingGenerator('Hello'); const sayGoodbye = greetingGenerator('Goodbye'); console.log(sayHello('Alice')); // Hello, Alice! console.log(sayGoodbye('Bob')); // Goodbye, Bob!
यहाँ, ग्रीटिंगजेनरेटर ग्रीटिंग वेरिएबल के साथ एक क्लोजर बनाता है, जिससे कॉल करने पर नमस्ते और अलविदा कहने की अनुमति मिलती है।
3. एसिंक्रोनस कोड में राज्य बनाए रखना
क्लोजर एसिंक्रोनस प्रोग्रामिंग में विशेष रूप से उपयोगी होते हैं, जहां आपको अपने कोड के विभिन्न हिस्सों में स्थिति बनाए रखने की आवश्यकता होती है।
function fetchData(url) { let cache = {}; return function() { if (cache[url]) { return Promise.resolve(cache[url]); } else { return fetch(url) .then(response => response.json()) .then(data => { cache[url] = data; return data; }); } }; } const getUserData = fetchData('https://jsonplaceholder.typicode.com/users/1'); getUserData().then(data => console.log(data)); // Fetches data from the API getUserData().then(data => console.log(data)); // Returns cached data
इस उदाहरण में, getUserData के लिए कई कॉलों में कैश बनाए रखा जाता है, यह सुनिश्चित करते हुए कि डेटा प्रति यूआरएल केवल एक बार प्राप्त किया जाता है और बाद में पुन: उपयोग किया जाता है।
क्लोजर जावास्क्रिप्ट की एक शक्तिशाली विशेषता है जो फ़ंक्शंस को उनके शाब्दिक दायरे तक पहुंच बनाए रखने की अनुमति देती है, भले ही उस दायरे से बाहर निष्पादित हो। वे डेटा गोपनीयता, स्टेटफुल फ़ंक्शंस को सक्षम करते हैं, और कार्यात्मक प्रोग्रामिंग की आधारशिला हैं। क्लोजर को समझने और उपयोग करके, आप अधिक कुशल, पठनीय और रखरखाव योग्य जावास्क्रिप्ट कोड लिख सकते हैं।
अपनी परियोजनाओं में क्लोजर के साथ प्रयोग करें, और आप जल्द ही उनकी बहुमुखी प्रतिभा और शक्ति की सराहना करेंगे। हैप्पी कोडिंग!
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3