1
00:00:00,810 --> 00:00:01,580
वापसी पर स्वागत है।

2
00:00:01,710 --> 00:00:04,150
इस वीडियो में हम closures के बारे में बात करने के लिए जा रहे हैं।

3
00:00:04,800 --> 00:00:08,240
क्लोजर अधिक चुनौतीपूर्ण अवधारणाओं अपने सिर के चारों ओर लपेट के लिए में से एक हैं।

4
00:00:08,370 --> 00:00:13,570
लेकिन एक बार आप वास्तव में समझ में क्या परिभाषा है और मैंने देखा है उनमें से एक जोड़ी यह एक बहुत आसान होने जा रहा है।

5
00:00:13,950 --> 00:00:15,720
तो क्या हम इस वीडियो में क्या करने जा रहे हैं।

6
00:00:15,720 --> 00:00:18,950
हम समझते हैं कि क्या एक बंद है और क्या यह नहीं है जा रहे हैं।

7
00:00:19,200 --> 00:00:22,460
हम निजी चर का अनुकरण करने की क्लोजर का उपयोग करने के लिए जा रहे हैं।

8
00:00:22,680 --> 00:00:26,360
हम असली दुनिया में closures के लिए कुछ उपयोग के मामलों को सूचीबद्ध करने के लिए जा रहे हैं।

9
00:00:27,210 --> 00:00:28,520
तो एक बंद क्या है।

10
00:00:28,830 --> 00:00:36,180
एक बंद एक समारोह में कहा कि बाहरी कार्य करता है कि पहले से लौट आए हैं में परिभाषित चर का उपयोग करता है।

11
00:00:36,690 --> 00:00:39,540
इसलिए मुझे पता है कि परिभाषा है अभी बहुत ज्यादा मतलब नहीं हो सकता है।

12
00:00:39,690 --> 00:00:41,580
तो चलो एक उदाहरण में सही दूर देखो।

13
00:00:42,030 --> 00:00:47,210
मैं आदेश विकल्प जे प्रेस और मेरे क्रोम देव उपकरणों को खोलने के लिए जा रहा हूँ।

14
00:00:47,370 --> 00:00:54,420
अब अगर हम कहते हैं कि एक बंद एक समारोह में आता है कि हमारे कार्यों में परिभाषित चर का उपयोग अच्छी तरह से तो चलो एक बाहरी समारोह बनाना है।

15
00:00:54,630 --> 00:01:02,200
तो मैं एक समारोह में एक चर डेटा बुलाया Amik इस समारोह में जो स्ट्रिंग के बराबर है की बाहरी अंदर बुलाया कर दूँगा।

16
00:01:02,220 --> 00:01:06,680
क्लोजर बाहरी समारोह के अंदर कर रहे हैं।

17
00:01:06,690 --> 00:01:19,130
मैं एक नया समारोह इनर और इस आंतरिक समारोह के अंदर बुलाया वापसी या एक चर आंतरिक डेटा और आंतरिक डेटा बुलाया स्ट्रिंग के बराबर है कर देगा।

18
00:01:19,140 --> 00:01:20,520
बहुत बढ़िया।

19
00:01:21,570 --> 00:01:28,820
अब इस आंतरिक समारोह के अंदर मैं स्ट्रिंग क्लोजर तार के साथ हैं वापस करने के लिए जा रहा हूँ।

20
00:01:28,830 --> 00:01:32,180
बहुत बढ़िया।

21
00:01:32,940 --> 00:01:34,660
अब हम इस बाहरी समारोह कहते हैं।

22
00:01:35,400 --> 00:01:36,870
और यह हमारे लिए क्या वापस आ जाना चाहिए।

23
00:01:36,990 --> 00:01:40,140
वैसे यह भीतरी समारोह की परिभाषा वापस करने के लिए जा रहा है।

24
00:01:40,410 --> 00:01:49,080
लेकिन यहाँ इस आंतरिक समारोह मैं एक चर बुलाया डेटा जो बाहरी समारोह में परिभाषित किया गया था का उपयोग कर रहा हूँ के अंदर है कि नोटिस।

25
00:01:49,110 --> 00:01:55,280
तो जब मैं इस समारोह बाहरी फोन और मैं भीतरी समारोह अभी फोन यह स्ट्रिंग रिटर्न।

26
00:01:55,320 --> 00:01:57,480
क्लोजर कमाल कर रहे हैं।

27
00:01:57,480 --> 00:02:11,100
तो तुम नहीं वास्तव में अभी बंद होने की शक्ति देख सकते हैं, लेकिन यह सिर्फ एक आंतरिक समारोह के अंदर यहीं इस डेटा चर की तरह बाहरी कार्यों में परिभाषित चर का उपयोग करने का एक अच्छा उदाहरण है।

28
00:02:11,100 --> 00:02:22,730
बाहरी समारोह पहले से ही यहीं नोटिस वापस आ गया है जब बाहरी समारोह वापस आ रहा है, लेकिन मैं अभी भले ही बाहरी समारोह पहले से ही वापस आ गया है इस डेटा चर का उपयोग करने में सक्षम हूँ।

29
00:02:23,610 --> 00:02:25,680
चलो एक और उदाहरण पर एक नज़र रखना।

30
00:02:25,950 --> 00:02:33,730
यहाँ पर मैं मैं एक समारोह आउटर कहा जाता है कि एक पैरामीटर में लेता है और यह एक समारोह इनर कहा जाता है जो एक पैरामीटर बी में लेता रिटर्न।

31
00:02:34,320 --> 00:02:43,790
भीतरी समारोह चर एक है जो बाहरी समारोह में और समय है कि यह कहा जाता है कि बाहरी समारोह वापस आ गया है द्वारा परिभाषित किया गया था का उपयोग कर रहा है।

32
00:02:44,070 --> 00:02:51,010
इसलिए इस समारोह भीतरी सिर्फ अन्य उदाहरण है कि हम यहाँ ध्यान दें चीजों के एक जोड़े को देखा तरह एक बंद है।

33
00:02:51,060 --> 00:03:05,400
हम यह काम करने के लिए और हम भी बाहरी समारोह तुरंत फोन करने के लिए और फिर आंतरिक समारोह कॉल या एक चर में आंतरिक समारोह के परिणाम की दुकान है और यह बाद में फोन जो हम आमतौर पर कर की क्षमता है के लिए आंतरिक समारोह लौटने के लिए है।

34
00:03:05,970 --> 00:03:07,520
चलो एक त्वरित व्यायाम की कोशिश करते हैं।

35
00:03:07,680 --> 00:03:15,540
यदि आप यह पता लगाने अगर इन कार्यों के दोनों एक दूसरे के लिए एक बंद पहेली वीडियो शामिल कर सकते हैं देखें।

36
00:03:15,750 --> 00:03:19,740
ठीक है कि तुम क्या यह पहला समारोह में साथ आया था।

37
00:03:19,740 --> 00:03:26,400
हम देख सकते हैं कि आंतरिक समारोह एक बाहरी समारोह में कहा कि वापस आ गया है में खोजने के लिए किसी भी चर का उपयोग नहीं कर रही है।

38
00:03:26,550 --> 00:03:31,320
तो यह एक सही यहाँ दूसरा उदाहरण में एक बंद नहीं होते हैं।

39
00:03:31,320 --> 00:03:41,610
हम देख सकते हैं कि आंतरिक समारोह में एक चर बुलाया डेटा जो एक बाहरी समारोह में कहा कि समय भीतरी समारोह बुलाया जाएगा द्वारा वापस आ गया है में परिभाषित किया गया था का उपयोग कर रहा है।

40
00:03:42,030 --> 00:03:47,980
तो पहले से एक नहीं है, लेकिन एक दूसरे के हमेशा के लिए एक बंद होने की परिभाषा के लिए वापस जाना है।

41
00:03:48,150 --> 00:03:56,650
और अगर आप देखते हैं कि आंतरिक समारोह एक बाहरी समारोह में चर का उपयोग नहीं कर रही है यह शायद एक बंद नहीं है।

42
00:03:56,820 --> 00:03:58,520
तो जब आप एक बंद करने का प्रयोग करेंगे।

43
00:03:58,920 --> 00:04:04,200
खैर closures के लिए एक महान उपयोग के मामले में अन्य भाषाओं में एक निजी चर का विचार बना है।

44
00:04:04,200 --> 00:04:11,520
चर है कि बाहर से संशोधित नहीं किया जा सकता है, जो हम निजी चर फोन पर जावास्क्रिप्ट में हम उस में बनाया नहीं है के लिए समर्थन मौजूद है।

45
00:04:11,520 --> 00:04:13,780
शुक्र है closures हमें उस के साथ मदद कर सकते हैं।

46
00:04:13,800 --> 00:04:23,960
तो चलो एक प्रेस आदेश विकल्प जगन में क्रोम देव उपकरणों में इस उदाहरण पर एक नज़र रखना और ऊपर खुला कि है और मैं एक समारोह काउंटर बुलाया लिखने जा रहा हूँ और इस काउंटर समारोह के अंदर।

47
00:04:23,970 --> 00:04:32,290
मैं तो शून्य के बराबर है और इस काउंटर समारोह के अंदर है कि मैं एक नया समारोह वापस करने के लिए जा रहा हूँ एक चर गिनती बुलाया बनाने के लिए जा रहा हूँ।

48
00:04:32,340 --> 00:04:35,460
कोई नोटिस यहीं है कि मैं इस समारोह में एक नाम नहीं दे रहा हूँ।

49
00:04:35,460 --> 00:04:38,360
वजह यह है कि इन कार्यों गुमनाम रहे हैं।

50
00:04:38,490 --> 00:04:45,100
तो अगर मैं इस समारोह के नाम करना चाहते हैं मैं गिनती की तरह यह कुछ कॉल कर सकते हैं लेकिन मैं करने की जरूरत नहीं है।

51
00:04:45,210 --> 00:04:50,230
और यह भीतरी समारोह के अंदर मैं प्लस प्लस पर लौटने गिनती करने के लिए जा रहा हूँ।

52
00:04:50,250 --> 00:04:58,280
और कारण है कि मैं प्लस प्लस कर रहा हूँ यहाँ एक उपसर्ग ऑपरेटर के रूप में तो यह है कि पहली बार है कि मैं इसे कहते हैं यह 1 से ऊपर चला जाता है।

53
00:04:58,290 --> 00:05:07,010
अब मैं एक चर सी कहा जाता है के बराबर होने के लिए इस काउंटर समारोह सेट कर सकते हैं और मुझे बचा लेंगे आर सी का मुकाबला करने के बराबर है।

54
00:05:07,020 --> 00:05:10,130
अब क्या करना है आपको लगता है सेल्सियस हो सकता है जब मैं इसे एक बार देख ले जा रहा है।

55
00:05:10,800 --> 00:05:12,230
खैर जैसे हम पहले देखा था।

56
00:05:12,300 --> 00:05:20,600
यह एक समारोह परिभाषा होने जा रहा है और अगर मैं सी कॉल फिर मैं गिनती 1 से incremented वापस करने के लिए जा रहा हूँ।

57
00:05:20,670 --> 00:05:23,060
चलो यह फिर से और फिर कहते हैं।

58
00:05:23,220 --> 00:05:30,920
लेकिन क्या इस के बारे में वास्तव में अच्छा है कि कोई भी गुंजाइश है कि मैं अभी में हूँ में चर गिनती करने के लिए उपयोग किया गया है।

59
00:05:31,050 --> 00:05:35,230
अगर मैं गिनती तक पहुँचने का प्रयास मैं पाने के लिए एक संदर्भ में कह रहे हैं गिनती परिभाषित नहीं है जा रहा हूँ।

60
00:05:35,370 --> 00:05:43,360
और जब से गिनती एक निजी चर रहा है कोई नहीं में आते हैं और गिनती का मूल्य उस पर बंद शुरू होता है हमेशा शून्य होने जा रहा है के साथ बदल सकते हैं।

61
00:05:43,440 --> 00:05:46,810
वीडियो रोकें और क्रोम कंसोल में इस उदाहरण की नकल करने की कोशिश करते हैं।

62
00:05:46,910 --> 00:05:50,210
यह समझ कैसे क्लोजर काम के साथ एक बहुत मदद मिलेगी।

63
00:05:50,880 --> 00:05:56,780
चलो इस कक्षा समारोह के अंदर निजी चर का एक और उदाहरण पर एक नज़र रखना।

64
00:05:56,790 --> 00:06:01,770
मैं एक चर बुलाया प्रशिक्षकों जो एक एल.पी. नामक दो तारों की एक सरणी है।

65
00:06:01,830 --> 00:06:06,240
इस कक्षा समारोह दो कार्यों के साथ एक ऑब्जेक्ट देता है।

66
00:06:06,450 --> 00:06:18,500
जाओ प्रशिक्षकों और एक शिक्षक प्रशिक्षकों पाने के लिए मुझे सिर्फ प्रशिक्षक पर disarrayed प्रदर्शित करने के लिए अनुमति देता है एक समारोह में कहा कि एक पैरामीटर में लेता है और प्रशिक्षक की सरणी के लिए यह कहते है।

67
00:06:18,570 --> 00:06:20,960
इसलिए जहां बंद यहाँ पर जा रहा है।

68
00:06:21,180 --> 00:06:24,640
खैर सूचना है कि प्राप्त एक ऐड प्रशिक्षक समारोह प्रशिक्षकों।

69
00:06:24,720 --> 00:06:33,060
दोनों जो इस समारोह में यहाँ और इस समारोह से बाहर है इस प्रशिक्षक के चर का इस्तेमाल करते हैं।

70
00:06:33,060 --> 00:06:42,750
तो इन दो कार्यों प्रशिक्षकों पाने के लिए और प्रशिक्षक जोड़ने के बाहरी कार्य करता है कि पहले से ही लौट आए हैं में परिभाषित चर का उपयोग कर रहे हैं।

71
00:06:42,750 --> 00:06:52,250
तुम यहीं वे प्रशिक्षकों मिलता देख सकते हैं मेरे एलेन बछेड़ा की सरणी बाहर मुद्रित करने के लिए अनुमति देता है और प्रशिक्षक मुझे उस सरणी के लिए एक प्रशिक्षक को जोड़ने के लिए अनुमति देता है और सिद्धांत रिटर्न।

72
00:06:52,620 --> 00:06:59,920
लेकिन जब मैं एक और चर के साथ एक नई कक्षा बना सकते हैं और मैं प्रशिक्षकों मिलता है हम देख सकते हैं कि इयान यहाँ नहीं है।

73
00:07:00,000 --> 00:07:06,810
अंत में बंद का उपयोग कर के माध्यम से हम यहाँ एक निजी चर से अधिक प्रशिक्षकों चर कर दिया है।

74
00:07:06,810 --> 00:07:14,530
कोई भी तो कभी भी इसे संशोधित कर सकते हैं कि एक कक्षा प्रशिक्षकों बनाई गई है मिलता है कि आप हमेशा एक गली के नाम से जाना जा रहे हैं।

75
00:07:14,760 --> 00:07:24,440
आप की तरह है, जबकि इतने भले ही हम एक छोटा सा उदाहरण यहाँ आप के बारे में काफी कुछ बंद होने का उपयोग करना सीखना होगा कि उपकरणों और प्रौद्योगिकियों के एक बहुत कुछ है एक छोटी सी के लिए हमारे साथ अटक कर रहे हैं तो यह लग रहा है।

76
00:07:24,540 --> 00:07:29,050
तो जब आप उस कोड के कुछ देख रहे हैं, तो आप हाजिर कर सकते हैं, जहां उन closures हैं देखने के लिए अपनी पूरी कोशिश।

77
00:07:29,250 --> 00:07:31,680
साथ ही अच्छी तरह से आप के लिए बाहर बात करने के लिए सुनिश्चित करें।

78
00:07:31,680 --> 00:07:32,830
तो हम क्या सीख सकते हैं।

79
00:07:32,850 --> 00:07:41,480
एक बंद मौजूद है एक आंतरिक समारोह चर बाहरी समारोह में घोषित जो पहले से ही वापस आ गया है और बंद मौजूद नहीं है का उपयोग करता है।

80
00:07:41,490 --> 00:07:56,770
आप एक आंतरिक समारोह वापस नहीं है और अगर है कि आंतरिक समारोह एक बाहरी समारोह से लौट आए चर का उपयोग करना नहीं है कि हम यह भी देखा कि हम निजी चर बनाने के लिए बंद होने का उपयोग करें और बेहतर कोड लिख सकते हैं हमारे तर्क और हमारे आवेदन को अलग करने के लिए।

81
00:07:57,690 --> 00:07:58,830
और कहा कि यह बंद होने के लिए है।
