जावास्क्रिप्ट में परिवर्तनीय घोषणाओं को समझना
जावास्क्रिप्ट की दुनिया में, स्वच्छ और कुशल कोड लिखने के लिए लेट और वेर के बीच अंतर को समझना महत्वपूर्ण है। ईसीएमएस्क्रिप्ट 6 में प्रस्तुत, लेट स्टेटमेंट ने वेरिएबल घोषणा में एक नया आयाम जोड़ा है, जिसे अक्सर वेरिएबल के दायरे पर अधिक नियंत्रण प्रदान करने के रूप में वर्णित किया जाता है।
जबकि दोनों होने देना और वर वेरिएबल घोषित करने के लिए उपयोग किया जाता है, वे विभिन्न व्यवहार प्रदर्शित करते हैं जो आपके कोड को महत्वपूर्ण रूप से प्रभावित कर सकते हैं। इस लेख में, हम इन अंतरों का पता लगाएंगे और कब उपयोग करना है इसके बारे में मार्गदर्शन प्रदान करेंगे होने देना के बजाय वर.
आज्ञा | विवरण |
---|---|
var | एक वैरिएबल घोषित करता है, वैकल्पिक रूप से इसे एक मान पर प्रारंभ करता है। यह फ़ंक्शन-स्कोप्ड या वैश्विक-स्कोप्ड है और इसे फिर से घोषित और अद्यतन किया जा सकता है। |
let | एक ब्लॉक-स्कोप्ड स्थानीय वैरिएबल घोषित करता है, वैकल्पिक रूप से इसे एक मान पर आरंभ करता है। इसे उसी दायरे में दोबारा घोषित नहीं किया जा सकता. |
const | एक ब्लॉक-स्कोप्ड, केवल पढ़ने योग्य स्थिरांक की घोषणा करता है। इसे घोषणा के समय प्रारंभ किया जाना चाहिए और इसे पुन: असाइन नहीं किया जा सकता है। |
writeHead | Node.js में HTTP प्रतिक्रिया के लिए स्थिति कोड और हेडर सेट करता है। |
createServer | Node.js में एक HTTP सर्वर बनाता है, जो अनुरोधों को सुन सकता है और उनका जवाब दे सकता है। |
listen | निर्दिष्ट पोर्ट पर आने वाले कनेक्शनों को सुनना शुरू करने के लिए सर्वर को सेट करता है। |
console.log | संदेशों को कंसोल पर प्रिंट करता है, जो डिबगिंग उद्देश्यों के लिए उपयोगी है। |
अभ्यास में "लेट" और "वेर" में अंतर कैसे है
फ्रंटएंड स्क्रिप्ट उदाहरण इनके बीच मुख्य अंतर को दर्शाता है var और let. में varTest फ़ंक्शन, चर var x एक if ब्लॉक के भीतर घोषित किया जाता है और पूरे फ़ंक्शन दायरे के भीतर एक ही वेरिएबल को पुन: असाइन करता है। इसके परिणामस्वरूप दोनों कंसोल लॉग 2 आउटपुट देते हैं, जो दर्शाता है कि कैसे var ब्लॉक स्कोप का सम्मान नहीं करता. इसके विपरीत, letTest फ़ंक्शन घोषित करता है let y if ब्लॉक के अंदर और बाहर दोनों। let ब्लॉक के अंदर घोषणा एक अलग चर है, इसलिए पहला कंसोल लॉग आउटपुट 2, और दूसरा कंसोल लॉग आउटपुट 1, ब्लॉक स्कोप का सम्मान करता है।
बैकएंड Node.js उदाहरण इन अंतरों को और अधिक प्रदर्शित करने के लिए एक सरल HTTP सर्वर सेट करता है। का उपयोग करते हुए var count एक if ब्लॉक के भीतर, हम उसे देखते हैं var बाहरी को अधिलेखित कर देता है count कार्य क्षेत्र के कारण परिवर्तनशील। let message ब्लॉक के अंदर उस ब्लॉक के लिए स्थानीय रहता है, प्रत्येक ब्लॉक के लिए अलग-अलग संदेशों को आउटपुट करके ब्लॉक-स्कोपिंग प्रदर्शित करता है। का उपयोग createServer और listen कमांड सर्वर स्थापित करता है, जो क्लाइंट को प्रतिक्रियाएं लिखता है, व्यावहारिक अनुप्रयोगों का प्रदर्शन करता है var और let वास्तविक दुनिया के परिदृश्यों में।
जावास्क्रिप्ट में "लेट" और "वेर" के बीच अंतर करना
फ्रंटएंड जावास्क्रिप्ट उदाहरण
// Example demonstrating the difference between 'var' and 'let'
function varTest() {
var x = 1;
if (true) {
var x = 2; // same variable
console.log(x); // 2
}
console.log(x); // 2
}
function letTest() {
let y = 1;
if (true) {
let y = 2; // different variable
console.log(y); // 2
}
console.log(y); // 1
}
varTest();
letTest();
"लेट" और "वेर" के साथ स्कोपिंग को समझना
बैकएंड Node.js उदाहरण
// Backend example using Node.js to demonstrate 'let' and 'var'
const http = require('http');
http.createServer((req, res) => {
res.writeHead(200, {'Content-Type': 'text/plain'});
var count = 10;
let message = "The count is: ";
if (true) {
var count = 20; // 'count' is hoisted and overwritten
let message = "New count is: "; // block-scoped
res.write(message + count); // New count is: 20
}
res.write(message + count); // The count is: 20
res.end();
}).listen(8080);
console.log('Server running at http://127.0.0.1:8080/');
दायरे और उत्थापन में गहराई से उतरें
तुलना करते समय विचार करने योग्य एक अन्य महत्वपूर्ण पहलू let और var फहरा रहा है. होइस्टिंग घोषणाओं को वर्तमान दायरे के शीर्ष पर ले जाने का जावास्क्रिप्ट का व्यवहार है। साथ var, वेरिएबल्स को फहराया जाता है और आरंभ किया जाता है undefined, जिसके घोषित होने से पहले यदि वेरिएबल का उपयोग किया जाता है तो अप्रत्याशित परिणाम हो सकते हैं। इसके विपरीत, let भी फहराया गया है, लेकिन इसे प्रारंभ नहीं किया गया है। इसका अर्थ है a तक पहुँचना let इसकी घोषणा से पहले वेरिएबल का परिणाम होगा a ReferenceError.
इसके अतिरिक्त, let लूप में बंद होने की समस्याओं को रोकने में मदद करता है। उपयोग करते समय var एक लूप में, सभी पुनरावृत्तियाँ एक ही वेरिएबल को संदर्भित करती हैं, जिससे बग हो सकते हैं। तथापि, let प्रत्येक पुनरावृत्ति के लिए एक नया बाइंडिंग बनाता है, यह सुनिश्चित करते हुए कि प्रत्येक लूप पुनरावृत्ति का अपना दायरा है। यह व्यवहार बनाता है let लूप के भीतर वेरिएबल घोषित करने के लिए एक सुरक्षित और अधिक पूर्वानुमानित विकल्प।
जावास्क्रिप्ट में 'लेट' और 'var' के बारे में सामान्य प्रश्न
- जावास्क्रिप्ट में उत्थापन क्या है?
- होइस्टिंग घोषणाओं को वर्तमान दायरे के शीर्ष पर ले जाने का जावास्क्रिप्ट का डिफ़ॉल्ट व्यवहार है। var घोषणाएँ फहराई जाती हैं और आरंभ की जाती हैं undefined, जबकि let घोषणाएँ फहराई जाती हैं लेकिन आरंभ नहीं की जाती हैं।
- यदि आप a का उपयोग करते हैं तो क्या होता है? let इसकी घोषणा से पहले परिवर्तनीय?
- ए तक पहुँचना let इसकी घोषणा से पहले परिवर्तनीय का परिणाम a होता है ReferenceError.
- कर सकना let और var उसी दायरे में पुनः घोषित किया जाए?
- नहीं, let जबकि उसी दायरे में पुनः घोषित नहीं किया जा सकता var उसी दायरे में पुनः घोषित किया जा सकता है।
- क्यों let लूप में बेहतर?
- let लूप के प्रत्येक पुनरावृत्ति के लिए एक नया बाइंडिंग बनाता है, यह सुनिश्चित करते हुए कि प्रत्येक लूप पुनरावृत्ति का अपना दायरा है। यह क्लोजर से जुड़े सामान्य बग को रोकता है।
- करता है var ब्लॉक स्कोप का सम्मान करें?
- नहीं, var ब्लॉक स्कोप का सम्मान नहीं करता; यह फ़ंक्शन-स्कोप्ड या वैश्विक-स्कोप्ड है।
- टेम्पोरल डेड जोन क्या है?
- टेम्पोरल डेड ज़ोन, दायरे में प्रवेश करने और चर की वास्तविक घोषणा के बीच का समय है, जिसके दौरान किसी तक पहुंच होती है let वेरिएबल एक फेंक देगा ReferenceError.
- कर सकना const के समान उपयोग किया जाए let?
- हाँ, const ब्लॉक-स्कोप जैसा है let, लेकिन इसका उपयोग उन वेरिएबल्स को घोषित करने के लिए किया जाता है जिन्हें पुन: असाइन नहीं किया जाना चाहिए।
- कब चाहिए let अधिक उपयोग किया जाए var?
- let का अधिक उपयोग किया जाना चाहिए var जब आपको ब्लॉक स्कोप की आवश्यकता हो और वेरिएबल उत्थापन और क्लोजर की समस्याओं से बचना हो।
परिवर्तनीय घोषणाओं पर अंतिम विचार
अंत में, का परिचय let ईसीएमएस्क्रिप्ट 6 में डेवलपर्स को जावास्क्रिप्ट में वेरिएबल घोषणा के लिए अधिक मजबूत टूल प्रदान किया गया है। के बीच के अंतर को समझना let और var स्वच्छ, अधिक रखरखाव योग्य कोड लिखने के लिए आवश्यक है। जबकि var कुछ स्थितियों में अभी भी उपयोगी हो सकता है, let स्कोप और उत्थापन पर बेहतर नियंत्रण प्रदान करता है, जिससे बग की संभावना कम हो जाती है।
चुनने के द्वारा let ऊपर var उपयुक्त परिदृश्यों में, डेवलपर्स ब्लॉक-स्कोपिंग का लाभ उठा सकते हैं और परिवर्तनीय घोषणा और उत्थापन से जुड़े सामान्य नुकसान से बच सकते हैं। आधुनिक जावास्क्रिप्ट विकास में महारत हासिल करने के इच्छुक किसी भी व्यक्ति के लिए यह ज्ञान मौलिक है।