"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > जावास्क्रिप्ट में क्लोजर को समझना: एक व्यापक मार्गदर्शिका

जावास्क्रिप्ट में क्लोजर को समझना: एक व्यापक मार्गदर्शिका

2024-07-30 को प्रकाशित
ब्राउज़ करें:163

Understanding Closures in JavaScript: A Comprehensive Guide

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

क्लोजर क्या है?

क्लोजर एक ऐसा फ़ंक्शन है जो अपने शाब्दिक दायरे तक पहुंच बनाए रखता है, तब भी जब फ़ंक्शन उस दायरे के बाहर निष्पादित होता है। सरल शब्दों में, क्लोजर एक फ़ंक्शन को उस वातावरण को "याद रखने" की अनुमति देता है जिसमें इसे बनाया गया था।

समापन क्यों महत्वपूर्ण हैं?

बंद कई कारणों से आवश्यक हैं:

  • डेटा गोपनीयता: क्लोजर आपको निजी वेरिएबल बनाने में सक्षम बनाता है जिन्हें फ़ंक्शन के बाहर से एक्सेस नहीं किया जा सकता है।

  • स्टेटफुल फ़ंक्शंस: वे फ़ंक्शंस को कॉल के बीच स्थिति बनाए रखने की अनुमति देते हैं।

  • कार्यात्मक प्रोग्रामिंग: कार्यात्मक प्रोग्रामिंग में क्लोजर एक प्रमुख अवधारणा है, जो उच्च-क्रम के कार्यों और करीइंग को सक्षम बनाता है।

क्लोजर कैसे काम करते हैं?

क्लोजर को समझने के लिए, आइए एक बुनियादी उदाहरण से शुरू करें:

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 के लिए कई कॉलों में कैश बनाए रखा जाता है, यह सुनिश्चित करते हुए कि डेटा प्रति यूआरएल केवल एक बार प्राप्त किया जाता है और बाद में पुन: उपयोग किया जाता है।

निष्कर्ष

क्लोजर जावास्क्रिप्ट की एक शक्तिशाली विशेषता है जो फ़ंक्शंस को उनके शाब्दिक दायरे तक पहुंच बनाए रखने की अनुमति देती है, भले ही उस दायरे से बाहर निष्पादित हो। वे डेटा गोपनीयता, स्टेटफुल फ़ंक्शंस को सक्षम करते हैं, और कार्यात्मक प्रोग्रामिंग की आधारशिला हैं। क्लोजर को समझने और उपयोग करके, आप अधिक कुशल, पठनीय और रखरखाव योग्य जावास्क्रिप्ट कोड लिख सकते हैं।

अपनी परियोजनाओं में क्लोजर के साथ प्रयोग करें, और आप जल्द ही उनकी बहुमुखी प्रतिभा और शक्ति की सराहना करेंगे। हैप्पी कोडिंग!

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/prinxard/understandard-closures-in-javascript-a-comphrihensive-guide-1ke9?1 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए स्टडी_गोलंग@163.com से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3