जावास्क्रिप्ट होस्टिंग
होस्टिंग घोषणाओं को शीर्ष पर ले जाने का जावास्क्रिप्ट का डिफ़ॉल्ट व्यवहार है।
जावास्क्रिप्ट घोषणाएं फहराई जाती हैं
जावास्क्रिप्ट में, एक चर का उपयोग करने के बाद घोषित किया जा सकता है।
दूसरे शब्दों में; घोषित होने से पहले एक चर का उपयोग किया जा सकता है।
उदाहरण 1 वही परिणाम देता है जो उदाहरण 2 :
उदाहरण 1
x = 5; // Assign 5 to x
elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x;
// Display x in the element
var x; // Declare x
उदाहरण 2
var x; // Declare x
x = 5; // Assign 5 to x
elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x;
// Display x in the element
इसे समझने के लिए आपको "उत्थापन" शब्द को समझना होगा।
होस्टिंग सभी घोषणाओं को वर्तमान दायरे के शीर्ष पर ले जाने का जावास्क्रिप्ट का डिफ़ॉल्ट व्यवहार है (वर्तमान स्क्रिप्ट या वर्तमान फ़ंक्शन के शीर्ष पर)।
लेट और कॉन्स्ट कीवर्ड्स
चर के साथ परिभाषित let
और const
ब्लॉक के शीर्ष पर फहराया जाता है, लेकिन प्रारंभ नहीं किया जाता है ।
अर्थ: कोड का ब्लॉक चर के बारे में जानता है, लेकिन इसका उपयोग तब तक नहीं किया जा सकता जब तक इसे घोषित नहीं किया जाता है।
घोषित होने से पहले एक let
चर का उपयोग करने के परिणामस्वरूप एक
ReferenceError
.
चर घोषित होने तक ब्लॉक की शुरुआत से "अस्थायी मृत क्षेत्र" में है:
उदाहरण
इसका परिणाम होगाReferenceError
:
carName = "Volvo";
let carName;
घोषित होने से पहले एक const
चर का उपयोग करना, एक वाक्यविन्यास त्रुटि है, इसलिए कोड बस नहीं चलेगा।
उदाहरण
यह कोड नहीं चलेगा।
carName = "Volvo";
const carName;
JS Let / Const में let और const के बारे में और पढ़ें ।
जावास्क्रिप्ट इनिशियलाइज़ेशन को होस्ट नहीं किया गया है
जावास्क्रिप्ट केवल घोषणाओं को फहराता है, आरंभीकरण नहीं।
उदाहरण 1 उदाहरण 2 के समान परिणाम नहीं देता है :
उदाहरण 1
var x = 5; // Initialize x
var y = 7; // Initialize y
elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x + " " + y; // Display x and y
उदाहरण 2
var x = 5; // Initialize x
elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x + " " + y; // Display x and y
var y = 7; // Initialize y
क्या यह समझ में आता है कि y अंतिम उदाहरण में अपरिभाषित है?
ऐसा इसलिए है क्योंकि केवल घोषणा (var y), आरंभीकरण नहीं (= 7) शीर्ष पर फहराया जाता है।
उत्थापन के कारण, y को उपयोग करने से पहले घोषित कर दिया गया है, लेकिन क्योंकि इनिशियलाइज़ेशन को फहराया नहीं गया है, y का मान अपरिभाषित है।
उदाहरण 2 लेखन के समान है:
उदाहरण
var x = 5; // Initialize x
var y; // Declare y
elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x + " " + y; // Display x and y
y = 7; // Assign 7 to y
शीर्ष पर अपने चर घोषित करें!
होस्टिंग (कई डेवलपर्स के लिए) जावास्क्रिप्ट का एक अज्ञात या अनदेखा व्यवहार है।
यदि कोई डेवलपर उत्थापन को नहीं समझता है, तो प्रोग्राम में बग (त्रुटियां) हो सकते हैं।
बग से बचने के लिए, हमेशा हर दायरे की शुरुआत में सभी चर घोषित करें।
चूंकि जावास्क्रिप्ट इस तरह से कोड की व्याख्या करता है, यह हमेशा एक अच्छा नियम है।
सख्त मोड में जावास्क्रिप्ट वेरिएबल को उपयोग करने की अनुमति नहीं देता है यदि वे घोषित नहीं हैं। अगले अध्याय में "सख्त प्रयोग करें" का
अध्ययन करें।