"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > जावास्क्रिप्ट उत्थापन को समझना: एक सरल मार्गदर्शिका

जावास्क्रिप्ट उत्थापन को समझना: एक सरल मार्गदर्शिका

2024-11-07 को प्रकाशित
ब्राउज़ करें:577

Understanding JavaScript Hoisting: A Simple Guide

यदि आप जावास्क्रिप्ट में नए हैं, तो आप भ्रमित करने वाली स्थितियों में आ सकते हैं, जहां चर अपरिभाषित प्रतीत होते हैं या ReferenceError जैसी त्रुटियां अप्रत्याशित रूप से सामने आती हैं। इसे अक्सर उत्थापन नामक अवधारणा से खोजा जा सकता है। लेकिन उत्थापन क्या है, और यह आपके कोड को कैसे प्रभावित करता है?

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

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

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

फ़ंक्शन उत्थापन: पूर्णतः उत्थापन परिभाषाएँ
फ़ंक्शन कीवर्ड का उपयोग करके घोषित किए गए फ़ंक्शन को उनकी पूरी परिभाषा के साथ फहराया जाता है। यह आपको कोड में वास्तविक घोषणा से पहले किसी फ़ंक्शन को कॉल करने या उपयोग करने की अनुमति देता है।

उदाहरण के लिए:


sum(5, 3); // Output: 8

function sum(a, b) {
  console.log(a   b);
}


भले ही कोड में घोषित होने से पहले sum() फ़ंक्शन को कॉल किया जाता है, यह पूरी तरह से काम करता है क्योंकि फ़ंक्शन घोषणा को निर्माण चरण के दौरान इसके दायरे के शीर्ष पर फहराया जाता है।

परिवर्तनीय उत्थापन: var, Let, और const
वेरिएबल उत्थापन फ़ंक्शन उत्थापन से भिन्न व्यवहार करता है, और यह इस पर निर्भर करता है कि आप var, Let, या const का उपयोग करते हैं या नहीं।

1. var घोषणाएँ
जब आप var का उपयोग करके एक वैरिएबल घोषित करते हैं, तो इसे अपरिभाषित डिफ़ॉल्ट मान के साथ इसके दायरे के शीर्ष पर फहराया जाता है। इसका मतलब यह है कि आप वेरिएबल को उसकी घोषणा से पहले एक्सेस कर सकते हैं, लेकिन जब तक आप उसे कोई मान निर्दिष्ट नहीं करते, वेरिएबल अपरिभाषित रहेगा।


console.log(city); // Output: undefined
var city = "New York";
console.log(city); // Output: "New York"


इस उदाहरण में, शहर को प्रारंभ में अपरिभाषित मान के साथ फहराया गया है। एक बार मान "न्यूयॉर्क" निर्दिष्ट हो जाने पर, दूसरा कंसोल.लॉग() सही ढंग से "न्यूयॉर्क" आउटपुट करता है।

2. लेट और कॉन्स्ट घोषणाएँ
लेट और कॉन्स्ट के साथ, वेरिएबल्स को भी फहराया जाता है, लेकिन वे अप्रारंभीकृत रहते हैं। इसका मतलब यह है कि यदि आप उनकी घोषणा से पहले उन तक पहुंचने का प्रयास करते हैं, तो आपको एक ReferenceError मिलेगा।


console.log(name); // ReferenceError: Cannot access 'name' before initialization
let name = "John Doe";


यह त्रुटि इसलिए होती है क्योंकि लेट और कॉन्स्ट वैरिएबल अपने दायरे की शुरुआत और उस बिंदु के बीच टेम्पोरल डेड जोन (टीडीजेड) नामक किसी चीज़ में मौजूद होते हैं जहां वे वास्तव में घोषित होते हैं। इस दौरान, आप वेरिएबल का संदर्भ नहीं दे सकते।

लेट और कॉन्स्ट के बीच मुख्य अंतर
लेट और कॉन्स्ट दोनों उत्थापन के संदर्भ में समान व्यवहार करते हैं, लेकिन कॉन्स्ट के लिए आपको घोषणा के दौरान एक मान निर्दिष्ट करने की आवश्यकता होती है, जबकि लेट आपको तुरंत कोई मान निर्दिष्ट किए बिना एक चर घोषित करने की अनुमति देता है।


const name = "John Doe"; // Must be initialized
let age; // Can be declared without assignment


प्रैक्टिस में उत्थापन
आइए एक उदाहरण देखें जो क्रिया में फ़ंक्शन और वेरिएबल उत्थापन दोनों को प्रदर्शित करता है:


console.log(city); // Output: undefined
sum(3, 4);    // Output: 7

function sum(x, y) {
  console.log(x   y);
}

var city = "New York";
console.log(city); // Output: "New York"


यहां, योग फ़ंक्शन को उसकी पूरी परिभाषा के साथ फहराया गया है, इसलिए फ़ंक्शन घोषित होने से पहले इसे कॉल किया जा सकता है। हालाँकि, शहर को अपरिभाषित मान के साथ फहराया गया है, जो बताता है कि पहला कंसोल.लॉग() आउटपुट अपरिभाषित क्यों होता है। एक बार असाइनमेंट हो जाने पर, दूसरा कंसोल.लॉग() सही मान आउटपुट करता है।

उत्थापन के नुकसान से बचने के लिए युक्तियाँ
उत्तोलन के कारण होने वाली समस्याओं से बचने के लिए, इन सर्वोत्तम प्रथाओं का पालन करें:

  1. - वेरिएबल्स की घोषणा से पहले उन तक पहुंचने से बचने के लिए var के बजाय लेट और कॉन्स्ट का उपयोग करें।
  2. - यह सुनिश्चित करने के लिए कि आपका कोड पूर्वानुमानित व्यवहार करता है, वेरिएबल और फ़ंक्शंस को उनके दायरे के शीर्ष पर घोषित करें।

प्रमुख उत्थापन अवधारणाओं का पुनर्कथन

  • होइस्टिंग से तात्पर्य कोड चलने से पहले घोषणाओं को उनके दायरे के शीर्ष पर ले जाने के जावास्क्रिप्ट के व्यवहार से है।
  • फ़ंक्शन के साथ घोषित फ़ंक्शंस को उनकी पूर्ण परिभाषाओं के साथ फहराया जाता है, जिससे उन्हें घोषित होने से पहले उपयोग करने की अनुमति मिलती है।
  • var के साथ घोषित वेरिएबल को अपरिभाषित डिफ़ॉल्ट मान के साथ फहराया जाता है, जबकि लेट और कॉन्स्ट के साथ घोषित वेरिएबल अप्रारंभीकृत रहते हैं, जिससे घोषणा से पहले पहुंचने पर ReferenceError उत्पन्न होता है।
  • टेम्पोरल डेड ज़ोन (टीडीजेड) लेट और कॉन्स्ट पर लागू होता है, जो उन्हें आरंभ होने से पहले एक्सेस करने से रोकता है।

होस्टिंग को समझकर, आप जावास्क्रिप्ट में सामान्य समस्याओं से बच सकते हैं और अधिक पूर्वानुमानित कोड लिख सकते हैं। अभ्यास के साथ, ये अवधारणाएँ दूसरी प्रकृति बन जाएंगी।

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/shubhamchan/understandard-javascript-hoisting-a-simple-guide-59k0?1 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए स्टडी_गोलंग@163.com पर संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3