जावास्क्रिप्ट समापन उदाहरण

| | | | | | | | | | | | | | | | | | | | | | | | |

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

जब कोई आपको बताता है कि कोई चीज़ किसी प्रोजेक्ट का हिस्सा है या नहीं, तो इसका क्या मतलब है?

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

स्थानीय दायरा

स्थानीय दायरा सबसे छोटा है आज हम जिन तीन क्षेत्रों पर चर्चा करेंगे। जब हम कोई फ़ंक्शन घोषित करते हैं, तो वर्ग कोष्ठक ({}) में संलग्न किसी भी चीज़ को फ़ंक्शन के लिए स्थानीय माना जाता है। जब जावास्क्रिप्ट इंजन फ़ंक्शन को पढ़ता है, तो यह चर घोषित करता है; जब यह समाप्त हो जाएगा, तो यह चरों को नष्ट कर देगा।

जैसा कि आप देख सकते हैं, जब "console.log ()" आमंत्रित ग्रीटिंग फ़ंक्शन का परिणाम होता है, तो हम वेबसाइटनाम तक पहुंचने में सक्षम होते हैं समारोह खेला गया। यह हमें "हैलो कर्मा करियर‚" चैनल देता है जिसे हम ढूंढ रहे थे। जैसा कि पहले ही उल्लेख किया गया है कि फ़ंक्शन में घोषित चर का कंसोल.लॉग () <कोड> एक त्रुटि उत्पन्न करता है क्योंकि इसे परिभाषित नहीं किया जा सकता है .

, कारण वेबसाइटनाम अपरिभाषित है क्योंकि कॉल किए जाने पर फ़ंक्शन के अंदर चर बनाए जाते हैं, और फिर टर्मिनल निर्देश निष्पादित होने पर नष्ट हो जाते हैं। फ़ंक्शन के बाहर कुछ भी फ़ंक्शन के अंदर चीजों तक पहुंच नहीं है, जब तक कि यह एक विशेष विन्यास है।

वैश्विक पहुंच

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

यदि कोड के अंत में console.log () गिनता है तो उपरोक्त कोड क्या करता है? आप क्या उम्मीद करते हैं कि क्या होगा?

आइए कोड देखें: ।

  1. चर काउंटर वैश्विक वातावरण में घोषित और शुरू किया गया
  2. वैश्विक वातावरण में घोषित एक फ़ंक्शन जोड़ा गया।
  3. जोड़ना लागू किया गया है।
  4. काउंटर वैरिएबल घोषित और लोकेल में शुरू हुआ .
  5. क्या स्थानीय काउंटर में 1 áê की वृद्धि होती है क्योंकि स्थानीय और वैश्विक नहीं?
  6. काउंटर लौटा दिया जाता है। समारोह का अंत।
  7. जोड़ें फिर से कॉल किया जाता है
  8. चरण 4 से 6 निष्पादित करें।
  9. चरण 3 फिर से दोहराएं 6.a
  10. console.log (काउंटर), áê क्या लौटाया जाता है?

चूंकि जब भी काउंटर 1 होता है तो फ़ंक्शन समाप्त हो जाता है, हमारे स्थानीय काउंटर वैरिएबल को फिर से घोषित किया जाता है और प्रत्येक बार फ़ंक्शन निष्पादित होने पर 0 पर पुनरारंभ होता है। कुछ भी हो, काउंटर हमेशा स्थानीय स्तर पर 1 पर रुकेगा।

यदि कोई फ़ंक्शन अपने दायरे में एक चर पाता है, तो यह चर के वैश्विक दायरे की तलाश नहीं करता है - इसलिए वैश्विक चर कभी नहीं बदलता है। तब हमारा console.log () 0 उत्पन्न करेगा क्योंकि इस निर्देश के वातावरण में हमारे चर परिभाषित वैश्विक वातावरण में निकटतम है।

लेक्सिकल स्कोप

लेक्सिकल स्कोप जावास्क्रिप्ट की मूलभूत अवधारणाओं में से एक है। यह विचार है कि एक फ़ंक्शन या एक चर का निर्माण कोड के कुछ हिस्सों तक पहुंच योग्य होगा और इसलिए कोड के अन्य हिस्सों के लिए पहुंच योग्य नहीं होगा। यह सब इस बात पर निर्भर करता है कि प्रत्येक चर और फ़ंक्शन की घोषणा कहाँ है।

आइए कोड के इस ब्लॉक पर एक नज़र डालें:.

यहां हमारे पास नेस्टेड फंक्शन का एक सेट है। init () फंक्शन var1 नाम के एक वेरिएबल की घोषणा करता है, एक फंक्शन को सेकेंड कहता है, और सेकेंड () को कॉल करता है।

जब संकलक पहली बार इस कोड के माध्यम से जाता है, तो यह उच्च स्तर पर जांच करता है कि हमारे पास क्या है:

इस बिंदु पर हम init () के अंदर और कुछ नहीं देख सकते हैं - हम केवल यह जानते हैं कि फ़ंक्शन मौजूद है जब हमारे init () फ़ंक्शन को कॉल किया जाता है, कंपाइलर फ़ंक्शन के अंदर क्या है, इसके लिए एक और उच्च स्तरीय लुक लेता है:

  1. var1.
  2. सेकेंड ()
  3. दूसरा () कॉल

init () कुछ भी नहीं जानता कि सेकंड () ब्लॉक के अंदर क्या हो रहा है। यह केवल देख सकता है इसके व्याख्यात्मक वातावरण में क्या है - आसपास की स्थिति।

प्रत्येक फ़ंक्शन नेस्टेड dna छोटे कंटेनर में रहता है, जैसे नेस्टेड रूसी matryoshkas का एक सेट (ऊपर देखें) उदाहरण के लिए पृष्ठ यदि आप सुनिश्चित नहीं हैं कि कौन पर हैं)। उस पर मौजूद गुड़िया जानती हैं कि उनके कंटेनर के अंदर क्या चल रहा है और माता-पिता में क्या हो चुका है या क्या हो चुका है। बड़ी गुड़िया, उदाहरण के लिए, केवल यह जानती है कि अगली गुड़िया उसके कंटेनर में मौजूद है। वह सेट की किसी भी अन्य गुड़िया को नहीं जानती, बस उसके शाब्दिक वातावरण (उसकी अवस्था) में क्या है और जो पहले ही हो चुका है (बाहरी क्षेत्र)।

वास्तव में हम दो चीजें जानते हैं:।

  1. बाहरी डोमेन आंतरिक डोमेन नहीं देख सकता
  2. आंतरिक क्षेत्र के पास बाहरी डोमेन तक पहुंच है।

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

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

क्लोजर

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

  1. ग्रीटिंग () समारोह मौजूद है, लेकिन हम अभी तक सामग्री नहीं जानते हैं।
  2. < कोड>ग्रीटयूज़र मौजूद है, लेकिन मुझे अभी तक इसकी सामग्री का पता नहीं है
  3. greetUser () - यह लाइन पिछले वाले को कॉल करती है, जो बदले में ग्रीटिंग को कॉल करती है ( ) फ़ंक्शन।
  4. उपयोगकर्ता नाम घोषित
  5. welcomeGreeting () मौजूद है, लेकिन मैं अभी तक सामग्री नहीं जानता
  6. वापसी विवरण ब्लॉक के तहत welcomeGreeting () वही फ़ंक्शन देता है
  7. console.log (`Hello,` + username) ; यहां हमारा कंसोल.लॉग यूजरनेम का मूल्य प्राप्त करने के लिए पैरेंट स्कोप तक पहुंच सकता है
  8. टर्मिनल की घोषणा जो फ़ंक्शन को समाप्त कर देती है और कोड ब्लॉक में वेरिएबल के अर्थ को नष्ट कर देती है।
  9. इस कोड में, हम एक साथ नेस्टिंग फंक्शन द्वारा जानकारी पास करते हैं ताकि हम माता-पिता के कूड़े को बाद में एक्सेस कर सकें



    निष्कर्ष

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