Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Javascript

जावास्क्रिप्ट के स्वयं निष्पादित अनाम फ़ंक्शन में यह समस्या क्या है?

<घंटा/>

मान लें कि यहां एक नमूना कोड स्निपेट है और हमें इस स्निपेट के लिए संभावित आउटपुट बताना होगा और इसके लिए स्पष्टीकरण देना होगा

var name = 'Zakir';
(() => {
   name = 'Rahul';
   return;
   console.log(name);
   function name(){
      let lastName = 'Singh';
   }
})();
console.log(name);

आइए इस समस्या रेखा से एक भोले दृष्टिकोण के साथ चलते हैं

1 → 'ज़ाकिर' चर नाम में संग्रहीत है

3 → हम एक स्व-निष्पादित अनाम फ़ंक्शन के अंदर प्रवेश करते हैं

4 → वेरिएबल नाम को 'राहुल' में फिर से शुरू किया गया है

5 → रिटर्न स्टेटमेंट का सामना करना पड़ता है, इसलिए हम फ़ंक्शन से बाहर निकलते हैं

15 → नाम चर को स्क्रीन पर प्रिंट करें जिसका वर्तमान मूल्य 'राहुल' है

तो, अंतिम आउटपुट होगा

Rahul

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

1 → 'ज़ाकिर' चर नाम में संग्रहीत है

3 → हम एक स्व-निष्पादित अनाम फ़ंक्शन के अंदर प्रवेश करते हैं

जैसे ही हम फंक्शन में प्रवेश करते हैं, फंक्शन होइस्टिंग शुरू हो जाती है और फंक्शन नाम () जो कि सेल्फ-एक्ज़ीक्यूटिंग फंक्शन के निचले भाग में परिभाषित होता है, सेल्फ-एक्ज़ीक्यूटिंग फंक्शन के बहुत ऊपर फहराया जाता है और उस मध्यवर्ती अवस्था में कोड कुछ इस तरह होगा -

उदाहरण

let name = 'Zakir';
(() => {
   let name;
   name = 'Rahul';
   return;
   console.log(name);
   name = function(){
      let lastName = 'Singh';
   }
})();
console.log(name);

ध्यान दें कि जब भी एक चर/फ़ंक्शन को उसके दायरे के शीर्ष पर फहराया जाता है, तो यह केवल परिभाषित और आरंभिक होता है, इसे इसकी वास्तविक स्थिति में आरंभ किया जाता है, शीर्ष पर यह अपरिभाषित होता है, लेकिन यह मौजूद होता है।

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

आउटपुट

Zakir

  1. जावास्क्रिप्ट में सेटटाइमआउट () विधि क्या है?

    सेटटाइमआउट() यह कई समय की घटनाओं में से एक है। विंडो ऑब्जेक्ट निर्दिष्ट समय अंतराल पर कोड के निष्पादन की अनुमति देता है। इस ऑब्जेक्ट ने सेटटाइमआउट() provided प्रदान किया है एक निश्चित समय के बाद किसी फ़ंक्शन को निष्पादित करने के लिए। इसमें दो पैरामीटर . लगते हैं तर्क के रूप में। एक है फ़ंक्शन और

  1. जावास्क्रिप्ट में एक अनाम कार्य क्या है?

    एक फ़ंक्शन एक्सप्रेशन समान है और फ़ंक्शन डिक्लेरेशन के समान सिंटैक्स है कोई नामित फ़ंक्शन एक्सप्रेशन (जहां अभिव्यक्ति का नाम उदाहरण के लिए कॉल स्टैक में उपयोग किया जा सकता है) या अनाम फ़ंक्शन एक्सप्रेशन परिभाषित कर सकता है। एक अनाम फ़ंक्शन एक्सप्रेशन का एक उदाहरण (नाम का उपयोग नहीं किया गया है) - v

  1. किसी वर्ग - जावास्क्रिप्ट में किसी फ़ंक्शन से पहले "प्राप्त करें" कीवर्ड क्या है?

    गेट कीवर्ड का उपयोग सी #, जावा और अन्य तकनीकों जैसे गेटर फ़ंक्शन के रूप में किया जा सकता है। हम एक वर्ग में निम्नलिखित की तरह प्राप्त करने के साथ एक फ़ंक्शन सेट करते हैं - वर्ग कर्मचारी {निर्माता (नाम) { यह नाम =नाम; } पूरा नाम प्राप्त करें () { यह नाम लौटाएं; }} उदाहरण प्राप्त करने का एक उदाहरण प