जावास्क्रिप्ट स्कोप का रहस्योद्घाटन

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

आम तौर पर, दो प्रकार के स्कोप होते हैं - लेक्सिकल स्कोप और डायनेमिक स्कोप। लेक्सिकल स्कोप नाम बाइंडिंग को इस आधार पर हल करता है कि वे कहाँ परिभाषित हैं (लेक्सिकल संदर्भ) और स्रोत कोड में उनका स्थान। डायनेमिक स्कोप प्रोग्राम स्थिति के आधार पर नाम बाइंडिंग को हल करता है, जो निष्पादन संदर्भ (रनटाइम संदर्भ) द्वारा निर्धारित किया जाता है।

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

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

यह तब तक जारी रहता है जब तक यह सबसे बाहरी कार्य तक नहीं पहुंच जाता।

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

मुझे आशा है कि अब आपके पास एक स्पष्ट तस्वीर है कि जावास्क्रिप्ट में लेक्सिकल स्कोपिंग कैसे काम करती है। आइए इस ज्ञान को एक वास्तविक कोड स्निपेट में लागू करें और इसे और अधिक गहराई से समझने का प्रयास करें।

मामला एक


var myCar = {
 model: “Nissan”,
 type: “XUV”,
 color: “black”,
 price: 1500000
}
function calLoanPercentage(number) {
 return myCar.price * number/100;
}
console.log(calLoadPercentage(25));

अब, यह एक नए नाम बाइंडिंग का सामना करता है, जो कि फ़ंक्शन है, calLoanPercentage(number) । इस नेम बाइंडिंग का भी वही दायरा होगा जो myCar का है क्योंकि ये दोनों एक ही स्तर पर हैं। फ़ंक्शन के मामले में, स्थानीय स्कोप नामक एक अतिरिक्त दायरा भी बनाया जाएगा, जहां फ़ंक्शन के अंदर मौजूद सभी पैरामीटर और अन्य चर उस दायरे के होंगे।

इन नाम बाइंडिंग को बाहरी कार्यों से नहीं कहा जा सकता है।
निष्पादन चरण के दौरान, जावास्क्रिप्ट इंजन कोड लाइन को लाइन से निष्पादित करना शुरू कर देता है। सबसे पहले, यह जांच करेगा कि क्या कोई नाम बाध्यकारी है जिसे myCar कहा जाता है , यदि यह मौजूद है, तो यह अपना मान निर्दिष्ट करेगा। फिर यह सीधे कंसोल स्टेटमेंट पर चला जाता है।

कंसोल स्टेटमेंट में, हम फ़ंक्शन calLoanPercentage(25) को तर्क मान 25 के साथ कॉल कर रहे हैं । जैसे ही जावास्क्रिप्ट इसे निष्पादित करता है, यह मेमोरी में नाम बाइंडिंग calLoanPercentage () की जांच करता है , जैसा कि यह मौजूद है, यह फ़ंक्शन लेता है परिभाषा और क्रियान्वित करना शुरू करता है।

सबसे पहले, यह इसके मापदंडों को परिभाषित करेगा और इसे तर्क मान 25 के साथ असाइन करेगा। इसके बाद, यह myCar.price * number/100 लौटाएगा । इस कथन को निष्पादित करते समय, यह सबसे पहले स्थानीय मेमोरी में myCar को खोजने का प्रयास करेगा । जैसा कि यह नहीं मिलता है, यह बाहरी फ़ंक्शन में चला जाएगा और इसकी मेमोरी में खोज करेगा।

जैसा कि यह पाता है, यह मूल्य को पकड़ लेगा और संपत्ति की कीमत की जांच करेगा , जो मौजूद है, और इसलिए मूल्य 1500000 लौटाता है। इसी तरह, यह अपनी स्थानीय मेमोरी में चर, संख्या की खोज करता है।

जैसा कि यह पाता है, यह मूल्य को पकड़ लेगा और अभिव्यक्ति का मूल्यांकन करेगा। मूल्यांकित मान को तब कंसोल.लॉग () विधि के तर्क के रूप में पारित किया जाता है , जो मान को कंसोल पर प्रिंट करता है।

केस 2


var functionExpression = function printOne() {
 var text = “hello”;
 console.log(text);
}
functionExpression() // prints “hello”
printOne() // ReferenceError: printOne is not defined

यही कारण है कि जब हम फ़ंक्शन को इसके नाम से कॉल करने का प्रयास करते हैं तो हमें संदर्भ त्रुटि मिलती है printOne ।

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

Plainenglish.io पर अधिक सामग्री

Suggested posts

डोमेन नाम के बारे में जानकारी ढूँढना

ब्रायन पी. होगन द्वारा स्मॉल, शार्प सॉफ्टवेयर टूल्स का एक अंश

डोमेन नाम के बारे में जानकारी ढूँढना

जब आप facebook.com से अनुरोध करते हैं, तो आपका कंप्यूटर उस डोमेन नाम को IP पते में अनुवादित करने के लिए डोमेन नाम खोजता है ताकि आपका कंप्यूटर वह कनेक्शन बना सके।

नो-कोड क्रांति: वेबफ्लो, फ्रैमर, बबल.आईओ के साथ व्यावसायिक समृद्धि को उजागर करना,

नो-कोड क्रांति: वेबफ्लो, फ्रैमर, बबल.आईओ के साथ व्यावसायिक समृद्धि को उजागर करना,

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

Related posts

असीम जीवन

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

हाई होने की एक बच्चे की पहली किताब

हाई होने की एक बच्चे की पहली किताब

(चेतावनी- यह व्यंग्य है, उल्लासपूर्वक विध्वंसक होने का इरादा है- निश्चित रूप से बच्चों के लिए नहीं) आपने अपने माँ और पिताजी को रसोई में छिपकर उन बदबूदार सिगरेटों को धूम्रपान करते देखा है। वे आपको बताते हैं।

खतरनाक बातचीत

खतरनाक बातचीत

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

केवल एक फ़ोन नंबर से किसी को भी ट्रैक करें | OSINT जांच

केवल एक फ़ोन नंबर से किसी को भी ट्रैक करें | OSINT जांच

आप एक OSINT अन्वेषक, CTF प्लेयर या कोई ऐसा व्यक्ति हो सकते हैं जिसे स्पैम कॉल्स आ रही हों। कोई व्यक्ति जो आपके द्वारा किसी विज्ञापन में देखे गए नंबर को सत्यापित करने का प्रयास कर रहा है।