What is Hoisting in Javascript in Hindi - Free Web Development || UI Development || React JS || Angular

Latest

Free Web Development ||Free UI Development || React JS || HTML5 || CSS3 || JavaScript || Angular Learn Web Development || Frontend Developer || Full Stack Developer

1 / 3
Welcome to Shravan Ghanchi

Wednesday, March 19, 2025

What is Hoisting in Javascript in Hindi

जावास्क्रिप्ट में hoisting का मतलब है कि स्क्रिप्ट के निष्पादन (execution) से पहले, वेरिएबल डिक्लेरेशन, फंक्शन डिक्लेरेशन, और क्लास डिक्लेरेशन को उनके स्कोप के शीर्ष पर "खिसका" दिया जाता है। हालांकि, सिर्फ डिक्लेरेशन को hoist किया जाता है, इनिशियलाइज़ेशन (Initialization) को नहीं।




Hoisting की विशेषताएँ:

  1. वेरिएबल्स और फंक्शन्स को उनके स्कोप के शीर्ष पर ले जाया जाता है।

  2. इसका प्रभाव यह होता है कि आप किसी वेरिएबल या फंक्शन को उनकी डिक्लेरेशन से पहले भी एक्सेस कर सकते हैं।

वेरिएबल Hoisting:

var वेरिएबल्स को hoist किया जाता है लेकिन उनकी वैल्यू undefined रहती है:

javascript
console.log(myVar); // Output: undefined
var myVar = 10;

ऊपर के कोड को जावास्क्रिप्ट इस तरह से मानती है:

javascript
var myVar;
console.log(myVar); // undefined
myVar = 10;

let और const वेरिएबल्स को भी hoist किया जाता है, लेकिन वे "temporal dead zone (TDZ)" में रहते हैं जब तक उनकी डिक्लेरेशन पूरी नहीं होती:

javascript:
console.log(myVar); // ReferenceError: Cannot access 'myVar' before initialization
let myVar = 10;

फंक्शन Hoisting:

फंक्शन डिक्लेरेशन पूरी तरह hoist होती है:

javascript
greet(); // Output: Hello!
function greet() {
    console.log('Hello!');
}

लेकिन फंक्शन एक्सप्रेशन और ऐरो फंक्शन पूरी तरह से hoist नहीं होते:

javascript
greet(); // TypeError: greet is not a function
var greet = function() {
    console.log('Hello!');
};

संक्षेप में:

  • डिक्लेरेशन hoist होता है, लेकिन इनिशियलाइज़ेशन नहीं।

  • var और let/const अलग-अलग तरह से व्यवहार करते हैं।

  • फंक्शन डिक्लेरेशन पूरी तरह से hoist होते हैं, लेकिन फंक्शन एक्सप्रेशन नहीं।


जावास्क्रिप्ट में Hoisting "behind the scenes" काम कैसे करता है, इसे समझने के लिए यह जानना ज़रूरी है कि जावास्क्रिप्ट एक इंटरप्रेटेड लैंग्वेज होने के बावजूद, कोड को दो चरणों में संभालता है:

1. Compilation Phase (कंपाइलेशन चरण):

इस चरण में, जावास्क्रिप्ट इंजन कोड की स्कैनिंग करता है और:

  • सभी वेरिएबल डिक्लेरेशन्स और फंक्शन डिक्लेरेशन्स को उनके स्कोप के शीर्ष पर ले जाता है (global scope या function scope के अनुसार)।

  • कोड का यह हिस्सा सिर्फ डिक्लेरेशन को "hoist" करता है, इनिशियलाइज़ेशन नहीं।

उदाहरण:

javascript
console.log(a);
var a = 10;

कंपाइलेशन के दौरान:

  • var a को hoist किया जाता है और डिफॉल्ट वैल्यू undefined दी जाती है।

  • कोड ऐसा माना जाता है:

    javascript
    var a;
    console.log(a); // undefined
    a = 10;
    

2. Execution Phase (निष्पादन चरण):

  • इस चरण में, कोड टॉप-डाउन यानी ऊपर से नीचे चलाया जाता है।

  • जब वेरिएबल या फंक्शन को एक्सेस किया जाता है, तो उनकी इनिशियलाइज़ेशन और वैल्यू का उपयोग होता है।

Hoisting के दौरान क्या होता है?

  • Variable Hoisting (var): वेरिएबल को डिफॉल्ट वैल्यू undefined मिलती है।

    javascript
    console.log(x); // undefined
    var x = 5;
    
  • let और const: इन वेरिएबल्स को भी hoist किया जाता है लेकिन वे Temporal Dead Zone (TDZ) में रहते हैं। जब तक कोड उस लाइन तक नहीं पहुंचता जहाँ वे डिक्लेयर किए गए हैं, उनका उपयोग नहीं किया जा सकता।

    javascript
    console.log(y); // ReferenceError
    let y = 10;
    
  • Function Declaration: ये पूरी तरह से hoist किए जाते हैं, इसलिए इन्हें डिक्लेरेशन से पहले भी कॉल किया जा सकता है।

    javascript
    greet(); // Output: Hello
    function greet() {
        console.log('Hello');
    }
    
  • Function Expressions और Arrow Functions: ये var वेरिएबल की तरह व्यवहार करते हैं और केवल डिक्लेरेशन होस्ट होती है, इनिशियलाइज़ेशन नहीं।

    javascript
    greet(); // TypeError: greet is not a function
    var greet = function() {
        console.log('Hello');
    };
    

निष्कर्ष:

  1. Hoisting के दौरान डिक्लेरेशन और स्कोप का प्रबंधन पहले किया जाता है।

  2. Execution Phase में कोड की वास्तविक इनिशियलाइज़ेशन और निष्पादन होता है।

No comments:

Post a Comment

Snow
Forest
Mountains
Snow
Forest
Mountains