इस ट्यूटोरियल में, आप उदाहरणों की मदद से जावास्क्रिप्ट उत्थापन के बारे में जानेंगे।
जावास्क्रिप्ट में उत्थापन एक व्यवहार है जिसमें एक फ़ंक्शन या एक चर को घोषणा से पहले इस्तेमाल किया जा सकता है। उदाहरण के लिए,
// using test before declaring console.log(test); // undefined var test;
उपरोक्त कार्यक्रम काम करता है और आउटपुट अपरिभाषित होगा। उपरोक्त कार्यक्रम जैसा व्यवहार करता है
// using test before declaring var test; console.log(test); // undefined
चूंकि चर परीक्षण केवल घोषित किया गया है और इसका कोई मूल्य नहीं है, इसलिए undefined
मूल्य इसे सौंपा गया है।
यदि आप चर के बारे में अधिक जानना चाहते हैं, तो जावास्क्रिप्ट चर पर जाएँ।
नोट : उत्थापन में, हालांकि ऐसा लगता है कि घोषणा कार्यक्रम में आगे बढ़ गई है, वास्तविक बात यह है कि संकलन चरण के दौरान फ़ंक्शन और चर घोषणाओं को स्मृति में जोड़ा जाता है।
परिवर्तनशील उत्थापन
चर और स्थिरांक के संदर्भ में, कीवर्ड var
फहराया जाता है और let
और const
उत्थापन अनुमति नहीं है।
उदाहरण के लिए,
// program to display value a = 5; console.log(a); var a; // 5
उपरोक्त उदाहरण में, चर को घोषित करने से पहले उपयोग किया जाता है। और कार्यक्रम काम करता है और आउटपुट 5 प्रदर्शित करता है। कार्यक्रम इस प्रकार है:
// program to display value var a; a = 5; console.log(a); // 5
हालाँकि जावास्क्रिप्ट में, इनिशियलाइज़ेशन को फहराया नहीं जाता है। उदाहरण के लिए,
// program to display value console.log(a); var a = 5;
आउटपुट
अपरिभाषित
उपरोक्त कार्यक्रम इस प्रकार है:
var a; console.log(a); a = 5;
संकलन चरण में केवल घोषणा को स्मृति में स्थानांतरित कर दिया गया है। इसलिए, वैरिएबल a का मान इसलिए है undefined
कि कोई इसे आरम्भ किए बिना मुद्रित होता है।
साथ ही, जब फ़ंक्शन के अंदर वेरिएबल का उपयोग किया जाता है, तो वेरिएबल केवल फ़ंक्शन के शीर्ष पर फहराया जाता है। उदाहरण के लिए,
// program to display value var a = 4; function greet() ( b = 'hello'; console.log(b); // hello var b; ) greet(); // hello console.log(b);
आउटपुट
हेलो अनक्रेडेड रेफ़रेंस: b परिभाषित नहीं है
उपरोक्त उदाहरण में, चर b को फ़ंक्शन के शीर्ष पर फहराया greet
जाता है और एक स्थानीय चर बन जाता है। इसलिए बी केवल फ़ंक्शन के अंदर पहुंच योग्य है। b वैश्विक चर नहीं बनता है।
स्थानीय और वैश्विक चर के बारे में अधिक जानने के लिए, जावास्क्रिप्ट चर स्कोप पर जाएँ।
नोट : उत्थापन में, चर घोषणा केवल तात्कालिक दायरे के लिए सुलभ है।
यदि एक चर का उपयोग let
खोजशब्द के साथ किया जाता है , तो वह चर नहीं फहराया जाता है। उदाहरण के लिए,
// program to display value a = 5; console.log(a); let a; // error
आउटपुट
अनट्रेडेड रेफरेंस: आरंभ से पहले 'ए' एक्सेस नहीं कर सकता
उपयोग करते समय let
, चर को पहले घोषित किया जाना चाहिए।
फहराने की क्रिया
इसे घोषित करने से पहले एक फ़ंक्शन को बुलाया जा सकता है। उदाहरण के लिए,
// program to print the text greet(); function greet() ( console.log('Hi, there.'); )
आउटपुट
नमस्ते
उपरोक्त कार्यक्रम में, greet
इसे घोषित करने से पहले फ़ंक्शन को बुलाया जाता है और प्रोग्राम आउटपुट दिखाता है। यह फहराने के कारण है।
हालाँकि, जब कोई फ़ंक्शन अभिव्यक्ति के रूप में उपयोग किया जाता है , तो एक त्रुटि उत्पन्न होती है क्योंकि केवल घोषणाएँ फहराई जाती हैं। उदाहरण के लिए;
// program to print the text greet(); let greet = function() ( console.log('Hi, there.'); )
आउटपुट
बिना संदर्भ संदर्भित: अभिवादन परिभाषित नहीं है
यदि var
उपरोक्त कार्यक्रम में उपयोग किया गया था, तो त्रुटि होगी:
बिना पढ़ा हुआ टाइपरोर: अभिवादन कोई फ़ंक्शन नहीं है
नोट : आम तौर पर, पायथन, सी, सी ++, जावा जैसी अन्य प्रोग्रामिंग भाषाओं में उत्थापन नहीं किया जाता है।
उत्थापन आपके कार्यक्रम में अवांछनीय परिणामों का कारण बन सकता है। और इसका उपयोग करने से पहले पहले चर और कार्यों की घोषणा करना सबसे अच्छा है और फहराने से बचें।
चर के मामले में, इसका उपयोग करना बेहतर let
है var
।