वापसी पर स्वागत है।
इस वीडियो में हम closures के बारे में बात करने के लिए जा रहे हैं।
क्लोजर अधिक चुनौतीपूर्ण अवधारणाओं अपने सिर के चारों ओर लपेट के लिए में से एक हैं।
लेकिन एक बार आप वास्तव में समझ में क्या परिभाषा है और मैंने देखा है उनमें से एक जोड़ी यह एक बहुत आसान होने जा रहा है।
तो क्या हम इस वीडियो में क्या करने जा रहे हैं।
हम समझते हैं कि क्या एक बंद है और क्या यह नहीं है जा रहे हैं।
हम निजी चर का अनुकरण करने की क्लोजर का उपयोग करने के लिए जा रहे हैं।
हम असली दुनिया में closures के लिए कुछ उपयोग के मामलों को सूचीबद्ध करने के लिए जा रहे हैं।
तो एक बंद क्या है।
एक बंद एक समारोह में कहा कि बाहरी कार्य करता है कि पहले से लौट आए हैं में परिभाषित चर का उपयोग करता है।
इसलिए मुझे पता है कि परिभाषा है अभी बहुत ज्यादा मतलब नहीं हो सकता है।
तो चलो एक उदाहरण में सही दूर देखो।
मैं आदेश विकल्प जे प्रेस और मेरे क्रोम देव उपकरणों को खोलने के लिए जा रहा हूँ।
अब अगर हम कहते हैं कि एक बंद एक समारोह में आता है कि हमारे कार्यों में परिभाषित चर का उपयोग अच्छी तरह से तो चलो एक बाहरी समारोह बनाना है।
तो मैं एक समारोह में एक चर डेटा बुलाया Amik इस समारोह में जो स्ट्रिंग के बराबर है की बाहरी अंदर बुलाया कर दूँगा।
क्लोजर बाहरी समारोह के अंदर कर रहे हैं।
मैं एक नया समारोह इनर और इस आंतरिक समारोह के अंदर बुलाया वापसी या एक चर आंतरिक डेटा और आंतरिक डेटा बुलाया स्ट्रिंग के बराबर है कर देगा।
बहुत बढ़िया।
अब इस आंतरिक समारोह के अंदर मैं स्ट्रिंग क्लोजर तार के साथ हैं वापस करने के लिए जा रहा हूँ।
बहुत बढ़िया।
अब हम इस बाहरी समारोह कहते हैं।
और यह हमारे लिए क्या वापस आ जाना चाहिए।
वैसे यह भीतरी समारोह की परिभाषा वापस करने के लिए जा रहा है।
लेकिन यहाँ इस आंतरिक समारोह मैं एक चर बुलाया डेटा जो बाहरी समारोह में परिभाषित किया गया था का उपयोग कर रहा हूँ के अंदर है कि नोटिस।
तो जब मैं इस समारोह बाहरी फोन और मैं भीतरी समारोह अभी फोन यह स्ट्रिंग रिटर्न।
क्लोजर कमाल कर रहे हैं।
तो तुम नहीं वास्तव में अभी बंद होने की शक्ति देख सकते हैं, लेकिन यह सिर्फ एक आंतरिक समारोह के अंदर यहीं इस डेटा चर की तरह बाहरी कार्यों में परिभाषित चर का उपयोग करने का एक अच्छा उदाहरण है।
बाहरी समारोह पहले से ही यहीं नोटिस वापस आ गया है जब बाहरी समारोह वापस आ रहा है, लेकिन मैं अभी भले ही बाहरी समारोह पहले से ही वापस आ गया है इस डेटा चर का उपयोग करने में सक्षम हूँ।
चलो एक और उदाहरण पर एक नज़र रखना।
यहाँ पर मैं मैं एक समारोह आउटर कहा जाता है कि एक पैरामीटर में लेता है और यह एक समारोह इनर कहा जाता है जो एक पैरामीटर बी में लेता रिटर्न।
भीतरी समारोह चर एक है जो बाहरी समारोह में और समय है कि यह कहा जाता है कि बाहरी समारोह वापस आ गया है द्वारा परिभाषित किया गया था का उपयोग कर रहा है।
इसलिए इस समारोह भीतरी सिर्फ अन्य उदाहरण है कि हम यहाँ ध्यान दें चीजों के एक जोड़े को देखा तरह एक बंद है।
हम यह काम करने के लिए और हम भी बाहरी समारोह तुरंत फोन करने के लिए और फिर आंतरिक समारोह कॉल या एक चर में आंतरिक समारोह के परिणाम की दुकान है और यह बाद में फोन जो हम आमतौर पर कर की क्षमता है के लिए आंतरिक समारोह लौटने के लिए है।
चलो एक त्वरित व्यायाम की कोशिश करते हैं।
यदि आप यह पता लगाने अगर इन कार्यों के दोनों एक दूसरे के लिए एक बंद पहेली वीडियो शामिल कर सकते हैं देखें।
ठीक है कि तुम क्या यह पहला समारोह में साथ आया था।
हम देख सकते हैं कि आंतरिक समारोह एक बाहरी समारोह में कहा कि वापस आ गया है में खोजने के लिए किसी भी चर का उपयोग नहीं कर रही है।
तो यह एक सही यहाँ दूसरा उदाहरण में एक बंद नहीं होते हैं।
हम देख सकते हैं कि आंतरिक समारोह में एक चर बुलाया डेटा जो एक बाहरी समारोह में कहा कि समय भीतरी समारोह बुलाया जाएगा द्वारा वापस आ गया है में परिभाषित किया गया था का उपयोग कर रहा है।
तो पहले से एक नहीं है, लेकिन एक दूसरे के हमेशा के लिए एक बंद होने की परिभाषा के लिए वापस जाना है।
और अगर आप देखते हैं कि आंतरिक समारोह एक बाहरी समारोह में चर का उपयोग नहीं कर रही है यह शायद एक बंद नहीं है।
तो जब आप एक बंद करने का प्रयोग करेंगे।
खैर closures के लिए एक महान उपयोग के मामले में अन्य भाषाओं में एक निजी चर का विचार बना है।
चर है कि बाहर से संशोधित नहीं किया जा सकता है, जो हम निजी चर फोन पर जावास्क्रिप्ट में हम उस में बनाया नहीं है के लिए समर्थन मौजूद है।
शुक्र है closures हमें उस के साथ मदद कर सकते हैं।
तो चलो एक प्रेस आदेश विकल्प जगन में क्रोम देव उपकरणों में इस उदाहरण पर एक नज़र रखना और ऊपर खुला कि है और मैं एक समारोह काउंटर बुलाया लिखने जा रहा हूँ और इस काउंटर समारोह के अंदर।
मैं तो शून्य के बराबर है और इस काउंटर समारोह के अंदर है कि मैं एक नया समारोह वापस करने के लिए जा रहा हूँ एक चर गिनती बुलाया बनाने के लिए जा रहा हूँ।
कोई नोटिस यहीं है कि मैं इस समारोह में एक नाम नहीं दे रहा हूँ।
वजह यह है कि इन कार्यों गुमनाम रहे हैं।
तो अगर मैं इस समारोह के नाम करना चाहते हैं मैं गिनती की तरह यह कुछ कॉल कर सकते हैं लेकिन मैं करने की जरूरत नहीं है।
और यह भीतरी समारोह के अंदर मैं प्लस प्लस पर लौटने गिनती करने के लिए जा रहा हूँ।
और कारण है कि मैं प्लस प्लस कर रहा हूँ यहाँ एक उपसर्ग ऑपरेटर के रूप में तो यह है कि पहली बार है कि मैं इसे कहते हैं यह 1 से ऊपर चला जाता है।
अब मैं एक चर सी कहा जाता है के बराबर होने के लिए इस काउंटर समारोह सेट कर सकते हैं और मुझे बचा लेंगे आर सी का मुकाबला करने के बराबर है।
अब क्या करना है आपको लगता है सेल्सियस हो सकता है जब मैं इसे एक बार देख ले जा रहा है।
खैर जैसे हम पहले देखा था।
यह एक समारोह परिभाषा होने जा रहा है और अगर मैं सी कॉल फिर मैं गिनती 1 से incremented वापस करने के लिए जा रहा हूँ।
चलो यह फिर से और फिर कहते हैं।
लेकिन क्या इस के बारे में वास्तव में अच्छा है कि कोई भी गुंजाइश है कि मैं अभी में हूँ में चर गिनती करने के लिए उपयोग किया गया है।
अगर मैं गिनती तक पहुँचने का प्रयास मैं पाने के लिए एक संदर्भ में कह रहे हैं गिनती परिभाषित नहीं है जा रहा हूँ।
और जब से गिनती एक निजी चर रहा है कोई नहीं में आते हैं और गिनती का मूल्य उस पर बंद शुरू होता है हमेशा शून्य होने जा रहा है के साथ बदल सकते हैं।
वीडियो रोकें और क्रोम कंसोल में इस उदाहरण की नकल करने की कोशिश करते हैं।
यह समझ कैसे क्लोजर काम के साथ एक बहुत मदद मिलेगी।
चलो इस कक्षा समारोह के अंदर निजी चर का एक और उदाहरण पर एक नज़र रखना।
मैं एक चर बुलाया प्रशिक्षकों जो एक एल.पी. नामक दो तारों की एक सरणी है।
इस कक्षा समारोह दो कार्यों के साथ एक ऑब्जेक्ट देता है।
जाओ प्रशिक्षकों और एक शिक्षक प्रशिक्षकों पाने के लिए मुझे सिर्फ प्रशिक्षक पर disarrayed प्रदर्शित करने के लिए अनुमति देता है एक समारोह में कहा कि एक पैरामीटर में लेता है और प्रशिक्षक की सरणी के लिए यह कहते है।
इसलिए जहां बंद यहाँ पर जा रहा है।
खैर सूचना है कि प्राप्त एक ऐड प्रशिक्षक समारोह प्रशिक्षकों।
दोनों जो इस समारोह में यहाँ और इस समारोह से बाहर है इस प्रशिक्षक के चर का इस्तेमाल करते हैं।
तो इन दो कार्यों प्रशिक्षकों पाने के लिए और प्रशिक्षक जोड़ने के बाहरी कार्य करता है कि पहले से ही लौट आए हैं में परिभाषित चर का उपयोग कर रहे हैं।
तुम यहीं वे प्रशिक्षकों मिलता देख सकते हैं मेरे एलेन बछेड़ा की सरणी बाहर मुद्रित करने के लिए अनुमति देता है और प्रशिक्षक मुझे उस सरणी के लिए एक प्रशिक्षक को जोड़ने के लिए अनुमति देता है और सिद्धांत रिटर्न।
लेकिन जब मैं एक और चर के साथ एक नई कक्षा बना सकते हैं और मैं प्रशिक्षकों मिलता है हम देख सकते हैं कि इयान यहाँ नहीं है।
अंत में बंद का उपयोग कर के माध्यम से हम यहाँ एक निजी चर से अधिक प्रशिक्षकों चर कर दिया है।
कोई भी तो कभी भी इसे संशोधित कर सकते हैं कि एक कक्षा प्रशिक्षकों बनाई गई है मिलता है कि आप हमेशा एक गली के नाम से जाना जा रहे हैं।
आप की तरह है, जबकि इतने भले ही हम एक छोटा सा उदाहरण यहाँ आप के बारे में काफी कुछ बंद होने का उपयोग करना सीखना होगा कि उपकरणों और प्रौद्योगिकियों के एक बहुत कुछ है एक छोटी सी के लिए हमारे साथ अटक कर रहे हैं तो यह लग रहा है।
तो जब आप उस कोड के कुछ देख रहे हैं, तो आप हाजिर कर सकते हैं, जहां उन closures हैं देखने के लिए अपनी पूरी कोशिश।
साथ ही अच्छी तरह से आप के लिए बाहर बात करने के लिए सुनिश्चित करें।
तो हम क्या सीख सकते हैं।
एक बंद मौजूद है एक आंतरिक समारोह चर बाहरी समारोह में घोषित जो पहले से ही वापस आ गया है और बंद मौजूद नहीं है का उपयोग करता है।
आप एक आंतरिक समारोह वापस नहीं है और अगर है कि आंतरिक समारोह एक बाहरी समारोह से लौट आए चर का उपयोग करना नहीं है कि हम यह भी देखा कि हम निजी चर बनाने के लिए बंद होने का उपयोग करें और बेहतर कोड लिख सकते हैं हमारे तर्क और हमारे आवेदन को अलग करने के लिए।
और कहा कि यह बंद होने के लिए है।