
31:04
What is Hoisting? | Javascript | Web Development Course
Apna College
Overview
यह वीडियो जावास्क्रिप्ट में 'होइस्टिंग' की अवधारणा को समझाता है, जिसमें वैरिएबल और फंक्शन डिक्लेरेशन को उनके स्कोप में ऊपर ले जाया जाता है। यह 'var', 'let', और 'const' कीवर्ड्स के बीच अंतरों पर भी प्रकाश डालता है, विशेष रूप से होइस्टिंग और टाइम-डेफ जोन के संबंध में। वीडियो में स्कोपिंग, ब्लॉक स्कोप, और वेरिएबल शैडोइंग जैसे विषयों को भी शामिल किया गया है, जो जावास्क्रिप्ट कोड के निष्पादन और मेमोरी प्रबंधन को समझने के लिए महत्वपूर्ण हैं। अंत में, यह 'const' की रीड-ओनली प्रकृति और 'let' तथा 'var' के उपयोग के लिए दिशानिर्देश प्रदान करता है।
How was this?
Save this permanently with flashcards, quizzes, and AI chat
Chapters
- होइस्टिंग वह प्रक्रिया है जहाँ जावास्क्रिप्ट इंटरप्रेटर कोड निष्पादित होने से पहले वैरिएबल और फ़ंक्शन डिक्लेरेशन के लिए मेमोरी आवंटित करता है।
- वेरिएबल डिक्लेरेशन को उनके स्कोप में ऊपर ले जाया जाता है, लेकिन उनका इनिशियलाइज़ेशन (मान असाइनमेंट) वहीं रहता है जहाँ वे कोड में लिखे गए हैं।
- फ़ंक्शन डिक्लेरेशन पूरी तरह से ऊपर ले जाए जाते हैं, जिसका अर्थ है कि आप उन्हें कोड में कहीं भी कॉल कर सकते हैं, भले ही वे बाद में परिभाषित किए गए हों।
- होइस्टिंग के कारण, आप किसी वेरिएबल को एक्सेस कर सकते हैं इससे पहले कि वह कोड में घोषित हो, लेकिन इसका मान 'undefined' होगा यदि वह 'var' से घोषित किया गया हो।
होइस्टिंग को समझना महत्वपूर्ण है क्योंकि यह बताता है कि जावास्क्रिप्ट कोड अप्रत्याशित तरीकों से क्यों व्यवहार कर सकता है, खासकर जब वैरिएबल और फ़ंक्शन को उनके डिक्लेरेशन से पहले एक्सेस किया जाता है।
एक फ़ंक्शन `sayHello` और एक वेरिएबल `i` को घोषित करने से पहले उन्हें कॉल करने या एक्सेस करने का प्रयास करना, जो 'undefined' या 'ReferenceError' के बजाय अपेक्षित आउटपुट देता है।
- 'var' के साथ घोषित वैरिएबल फ़ंक्शन-स्कोप या ग्लोबल-स्कोप होते हैं और होइस्टिंग के दौरान 'undefined' के रूप में इनिशियलाइज़ होते हैं।
- 'let' के साथ घोषित वैरिएबल ब्लॉक-स्कोप होते हैं और होइस्टिंग के दौरान 'Temporal Dead Zone' (TDZ) में रहते हैं, जिसका अर्थ है कि उन्हें इनिशियलाइज़ेशन से पहले एक्सेस नहीं किया जा सकता है, जिससे 'ReferenceError' होता है।
- 'const' के साथ घोषित वैरिएबल भी ब्लॉक-स्कोप होते हैं और TDZ में रहते हैं, लेकिन उन्हें घोषित करते समय तुरंत इनिशियलाइज़ किया जाना चाहिए और बाद में बदला नहीं जा सकता है।
- TDZ वह अवधि है जब एक 'let' या 'const' वेरिएबल मौजूद होता है लेकिन एक्सेस करने के लिए तैयार नहीं होता है।
इन कीवर्ड्स के बीच के अंतर को जानने से आपको अपने कोड में सही स्कोपिंग और वैरिएबल व्यवहार सुनिश्चित करने में मदद मिलती है, जिससे बग्स कम होते हैं और कोड अधिक अनुमानित बनता है।
एक ब्लॉक के अंदर 'let' के साथ घोषित वेरिएबल `i` को एक्सेस करने का प्रयास करना, जिससे 'ReferenceError' उत्पन्न होता है, जबकि 'var' के साथ ऐसा करने पर 'undefined' या ब्लॉक के बाहर का मान मिलता है।
- स्कोपिंग यह निर्धारित करती है कि कोड के विभिन्न हिस्सों से वैरिएबल और फ़ंक्शन कहाँ एक्सेस किए जा सकते हैं।
- ब्लॉक स्कोप (जैसे 'let' और 'const' द्वारा प्रदान किया गया) कोड के एक विशिष्ट ब्लॉक (जैसे कर्ली ब्रेसिज़ `{}` के भीतर) तक वैरिएबल की पहुंच को सीमित करता है।
- वेरिएबल शैडोइंग तब होती है जब एक इनर स्कोप में एक वेरिएबल उसी नाम के आउटर स्कोप वेरिएबल को छुपा देता है।
- फ़ंक्शन के अंदर 'var' का उपयोग करने से यह आउटर स्कोप के वैरिएबल को शैडो कर सकता है, जबकि 'let' का उपयोग करने से यह केवल ब्लॉक स्कोप तक सीमित रहता है।
स्कोपिंग और शैडोइंग को समझना यह सुनिश्चित करने के लिए महत्वपूर्ण है कि आपके वैरिएबल सही ढंग से एक्सेस किए जा रहे हैं और अनजाने में अन्य वैरिएबल को ओवरराइट नहीं कर रहे हैं, जिससे कोड की स्थिरता बनी रहती है।
एक फ़ंक्शन के अंदर 'var' का उपयोग करके एक वेरिएबल को फिर से घोषित करना, जो फ़ंक्शन के बाहर उसी नाम के वेरिएबल को प्रभावित करता है, जबकि 'let' का उपयोग करने पर यह केवल फ़ंक्शन के ब्लॉक तक सीमित रहता है।
- 'const' के साथ घोषित वैरिएबल को रीड-ओनली (केवल पढ़ने योग्य) माना जाता है; एक बार मान असाइन करने के बाद इसे बदला नहीं जा सकता है।
- 'const' वैरिएबल को घोषित करते समय उन्हें इनिशियलाइज़ करना अनिवार्य है।
- ऑब्जेक्ट्स और एरेज़ के लिए 'const' का उपयोग करते समय, वैरिएबल स्वयं रीड-ओनली होता है, लेकिन ऑब्जेक्ट या एरे के अंदर की प्रॉपर्टीज़ या एलिमेंट्स को बदला जा सकता है।
- यदि आप किसी वैरिएबल को फिर से असाइन करने का इरादा नहीं रखते हैं, तो 'const' का उपयोग करना एक अच्छा अभ्यास है।
'const' का उपयोग कोड की पठनीयता और सुरक्षा को बढ़ाता है, यह स्पष्ट करता है कि कौन से मान स्थिर रहने चाहिए और अनजाने में होने वाले संशोधनों को रोकता है।
एक ऑब्जेक्ट को 'const' के साथ घोषित करना और फिर उसकी एक प्रॉपर्टी को बदलना, जो सफल होता है, लेकिन फिर ऑब्जेक्ट को एक नए ऑब्जेक्ट के साथ फिर से असाइन करने का प्रयास करना, जिससे एक एरर उत्पन्न होता है।
Key takeaways
- जावास्क्रिप्ट में होइस्टिंग का मतलब है कि वैरिएबल और फ़ंक्शन डिक्लेरेशन निष्पादन से पहले मेमोरी में चले जाते हैं।
- 'var' फ़ंक्शन-स्कोप है और होइस्टिंग पर 'undefined' होता है, जबकि 'let' और 'const' ब्लॉक-स्कोप हैं और Temporal Dead Zone (TDZ) में रहते हैं।
- TDZ वह अवधि है जब 'let' और 'const' वैरिएबल मौजूद होते हैं लेकिन एक्सेस करने के लिए तैयार नहीं होते हैं, जिससे 'ReferenceError' होता है।
- वेरिएबल शैडोइंग तब होती है जब एक इनर स्कोप में एक वेरिएबल आउटर स्कोप के समान नाम वाले वेरिएबल को छुपा देता है।
- 'const' का उपयोग उन वैरिएबल के लिए करें जिन्हें आप बदलना नहीं चाहते हैं; यह कोड को अधिक सुरक्षित और समझने योग्य बनाता है।
- ऑब्जेक्ट्स और एरेज़ के लिए 'const' का उपयोग करते समय, आप उनकी सामग्री को संशोधित कर सकते हैं, लेकिन वैरिएबल को स्वयं फिर से असाइन नहीं कर सकते।
Key terms
HoistingExecution ContextMemory Creation PhaseCode Execution PhasevarletconstTemporal Dead Zone (TDZ)ScopeBlock ScopeFunction ScopeVariable ShadowingGlobal ObjectCall Stack
Test your understanding
- जावास्क्रिप्ट में होइस्टिंग क्या है और यह वैरिएबल और फ़ंक्शन डिक्लेरेशन को कैसे प्रभावित करती है?
- 'var', 'let', और 'const' के बीच होइस्टिंग और स्कोपिंग के संबंध में मुख्य अंतर क्या हैं?
- Temporal Dead Zone (TDZ) क्या है और यह 'let' और 'const' वैरिएबल के साथ कैसे इंटरैक्ट करती है?
- वेरिएबल शैडोइंग क्या है और इसे 'var' और 'let' का उपयोग करके कैसे प्रदर्शित किया जा सकता है?
- 'const' कीवर्ड का उपयोग करने के क्या फायदे हैं, खासकर जब ऑब्जेक्ट्स या एरेज़ के साथ काम कर रहे हों?