जावास्क्रिप्ट में क्लोज़र क्या हैं और वे कैसे काम करते हैं?



जावास्क्रिप्ट में क्लोजर फंक्शन क्रिएशन टाइम पर हर बार एक फंक्शन बनाया जाता है। इनका उपयोग करते समय यह कोड पर बेहतर नियंत्रण प्रदान करता है।

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

जावा में ट्रिम क्या करता है

जावास्क्रिप्ट में क्लोजर का परिचय

एक बंद एक का एक संयोजन है समारोह अपने आसपास के राज्य यानी लेक्सिकल वातावरण के संदर्भ में एक साथ बंडल किया गया। दूसरे शब्दों में, एक क्लोजर आपको आंतरिक फ़ंक्शन से बाहरी फ़ंक्शन के दायरे तक पहुंच प्रदान करता है।





कोडर - जावास्क्रिप्ट में बंद - edureka

अधिकांश डेवलपर्स जावास्क्रिप्ट में बंद का उपयोग होशपूर्वक या अनजाने में करते हैं। इनका उपयोग करते समय यह कोड पर बेहतर नियंत्रण प्रदान करता है। साथ ही, यह किसी भी दौरान सबसे अधिक बार पूछा जाने वाला प्रश्न है ।



उदाहरण:

function foo () {var x = 10 function inner () {रिटर्न x} रिटर्न इनर} var get_func_inner = foo () कंसोल.log (get_func_inner ()) कंसोल.log (get_unc_inner ()) कंसोल.log (get_func_inner ())

आउटपुट:

१०
१०
१०



यहां, आप एक्सेस कर सकते हैं परिवर्तनशील x जिसे फंक्शन फू () में फंक्शन इनर () के माध्यम से परिभाषित किया गया है क्योंकि बाद में एन्क्लोजिंग फ़ंक्शन के निष्पादन के समय एन्क्लोजिंग फंक्शन की स्कोप चेन को संरक्षित करता है। इस प्रकार, आंतरिक फ़ंक्शन एक्स के मान को इसके दायरे की श्रृंखला के माध्यम से जानता है। यह आप जावास्क्रिप्ट में उपयोग कैसे कर सकते हैं।

प्रैक्टिकल क्लोजर

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

नतीजतन, आप कहीं भी एक क्लोजर का उपयोग कर सकते हैं जो आप आमतौर पर केवल एक विधि के साथ एक वस्तु का उपयोग कर सकते हैं।

उदाहरण:

function makeSizer (आकार) {return function () {document.body.style.fontSize = size + 'px'}} var size12 = makeSizer (12) var size14 = makeSizer (14) var size16 - makeSizer (16)

उपरोक्त उदाहरण को आमतौर पर कॉलबैक के रूप में संलग्न किया जाता है: एक एकल फ़ंक्शन जिसे घटना के जवाब में निष्पादित किया जाता है।

स्कोप चेन

जावास्क्रिप्ट में क्लोजर के तीन स्कोप हैं जैसे:

सेलेनियम में डेटा चालित परीक्षण
  • स्थानीय स्कोप
  • बाहरी कार्यक्षेत्र
  • वैश्विक कार्यक्षेत्र

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

// ग्लोबल स्कोप var x = 10 फंक्शन सम (a) {रिटर्न फंक्शन (b) {रिटर्न फंक्शन (c) {// एक्सटर्नल फंक्शन स्कोप रिटर्न फंक्शन (d) {// लोकल स्कोप a + b + c + d + x}}}} कंसोल.लॉग (राशि (1) (2) (3) (4)) // लॉग 20

यह अनाम कार्यों के बिना भी लिखा जा सकता है:

// ग्लोबल स्कोप var x = 10 फंक्शन सम (a) {रिटर्न फंक्शन sum2 (b) {रिटर्न फंक्शन sum3 (c) {// एक्सटर्नल फंक्शन्स स्कोप return sum4 (d) {// लोकल स्कोप a + b + c + d + x}}}} var s = sum (1) var s1 = s (2) var s2 = s1 (3) var s3 = s2 (4) कंसोल.लॉग (s3) // लॉग 20

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

जावा उदाहरण में सॉकेट प्रोग्रामिंग

एक पाश के भीतर बंद

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

उदाहरण:

फ़ंक्शन बाहरी () {var arrest = [] var i for (i = 0 i)<3 i++) { // storing anonymus function arr[i] = function () { return i } } // returning the array. return arr } var get_arr = outer() console.log(get_arr[0]()) console.log(get_arr[1]()) console.log(get_arr[2]())

आउटपुट:




इसके साथ, हम अपने लेख के अंत में आ गए हैं। मुझे उम्मीद है कि आप समझ गए होंगे कि जावास्क्रिप्ट कैसे काम करती है और कोड का बेहतर नियंत्रण पाने के लिए उनका उपयोग कैसे किया जाता है।

अब जब आप जावास्क्रिप्ट में क्लोजर के बारे में जानते हैं, तो देखें Edureka द्वारा। वेब डेवलपमेंट सर्टिफिकेशन ट्रेनिंग आपको HTML5, CSS3, Twitter बूटस्ट्रैप 3, jQuery और Google API का उपयोग करके प्रभावशाली वेबसाइट बनाने और इसे अमेज़ॅन सिंपल स्टोरेज सर्विस (S3) में तैनात करने में मदद करेगी।

क्या आप हमसे कोई प्रश्न पूछना चाहते हैं? कृपया 'जावास्क्रिप्ट में क्लोज़र्स' के टिप्पणी अनुभाग में इसका उल्लेख करें और हम आपके पास वापस आ जाएंगे।