इस ट्यूटोरियल में, आप उदाहरणों की मदद से जावास्क्रिप्ट में let और var के बीच के अंतर के बारे में जानेंगे।
जावास्क्रिप्ट में, दोनों खोजशब्दों var
और let
चर घोषित करने के लिए उपयोग किया जाता है।
let
कीवर्ड के रूप में जाना बाद में जावास्क्रिप्ट के संस्करण में पेश किया गया था ES6 (ES2015) । और यह चर घोषित करने का पसंदीदा तरीका है।
जावास्क्रिप्ट बनाम बनाम
यहाँ let
और के बीच के अंतर का अवलोकन है var
।
चलो | var |
---|---|
चलो ब्लॉक-स्कोप किया गया है। | var फ़ंक्शन स्कूप किया गया है। |
चलो चर को फिर से दिखाने की अनुमति नहीं देता है। | var चरों को पुन: प्रसारित करने की अनुमति देता है। |
उत्थापन नहीं होने देता। | वर्जन में उत्थापन होता है। |
जावास्क्रिप्ट को स्थानीय स्कोप में बनाम संस्करण दें
var फ़ंक्शन स्कूप किया गया है
किसी फ़ंक्शन के अंदर घोषित चर को किसी फ़ंक्शन के var
भीतर कहीं भी उपयोग किया जा सकता है। उदाहरण के लिए,
// program to print text // variable a cannot be used here function greet() ( // variable a can be used here var a = 'hello'; console.log(a); ) // variable a cannot be used here greet(); // hello
उपरोक्त कार्यक्रम में, चर को साथ घोषित किया गया है var
। चर को फंक्शन के अंदर कहीं भी इस्तेमाल किया जा सकता है greet
।
चलो ब्लॉक-स्कोप किया गया है
के साथ घोषित चर let
केवल कोड के एक ब्लॉक के अंदर पहुँचा जा सकता है। उदाहरण के लिए,
// program to print the text // variable a cannot be used here function greet() ( let a = 'hello'; // variable b cannot be used here if(a == 'hello')( // variable b can be used here let b = 'world'; console.log(a + ' ' + b); ) // variable b cannot be used here console.log(a + ' ' + b); // error ) // variable a cannot be used here greet();
आउटपुट
हैलो वर्ल्ड अनक्रेडेड रेफरेंस संदर्भ: b परिभाषित नहीं है
उपरोक्त कार्यक्रम में, चर को फ़ंक्शन के अंदर घोषित किया जाता है और इसे फ़ंक्शन के अंदर कहीं भी एक्सेस किया जा सकता है (एक फ़ंक्शन स्कोप हो जाता है)।
हालांकि if
ब्लॉक के स्टेटमेंट के अंदर वेरिएबल बी घोषित किया गया है । b ब्लॉक-स्कोप होगा और केवल if
ब्लॉक के अंदर ही पहुँचा जा सकता है ।
इसलिए जब आप if
ब्लॉक के बाहर बी का उपयोग करने की कोशिश करते हैं , तो एक त्रुटि होती है (जैसा कि कार्यक्रम में ऊपर दिखाया गया है)।
नोट : किसी फ़ंक्शन के अंदर घोषित किए गए वेरिएबल्स फंक्शन स्कॉप किए जाएंगे var
और दोनों के लिए let
।
चलो चर को फिर से दिखाने की अनुमति नहीं देता है
1. के साथ घोषित एक चर var
फिर से redeclared किया जा सकता है। उदाहरण के लिए,
var a = 5; // 5 var a = 3; // 3
एक चर के साथ घोषित एक let
ही ब्लॉक या एक ही दायरे के भीतर redeclared नहीं किया जा सकता है। उदाहरण के लिए,
let a = 5; let a = 3; // error
आउटपुट
बिना सिंटैक्स ई-मेल: पहचानकर्ता 'ए' पहले ही घोषित किया जा चुका है
2. एक चर को var
अलग दायरे में ब्लॉक करना या बाहरी चर का मान भी बदलना । उदाहरण के लिए,
var a = 5; console.log(a); // 5 ( var a = 3; console.log(a); // 3 ) console.log(a); // 3
let
किसी भिन्न क्षेत्र या ब्लॉक के साथ एक चर को फिर से घोषित करना उस चर को एक अलग चर के रूप में मानता है। और बाहर एक चर का मूल्य नहीं बदलता है। उदाहरण के लिए,
let a = 5; console.log(a); // 5 ( let a = 3; console.log(a); // 3 ) console.log(a); // 5
3. जब घोषित चर को var
लूप में उपयोग किया जाता है, तो उस चर का मान बदल जाता है। उदाहरण के लिए,
var a = 2; for(var a = 0; a < 3; a++) ( console.log('hello'); ) console.log(a); // 3
उपरोक्त कार्यक्रम में, for
लूप चर को फिर से परिभाषित करता है। इसलिए मूल्य को अंत में 3 में a
बदल दिया जाता है ।
जब एक चर के साथ घोषित देना एक पाश में प्रयोग किया जाता है, एक चर का मान नहीं बदलता है। उदाहरण के लिए,
let a = 2; for(let a = 0; a < 3; a++) ( console.log('hello'); ) console.log(a); // 2
उपरोक्त कार्यक्रम में, for
लूप वेरिएबल को उपरोक्त घोषित किए गए से भिन्न वेरिएबल के रूप में मानता है। और उस चर का दायरा केवल for
लूप के अंदर है । इसलिए चर का मूल्य अंत में 2 रहता है ।
चलो उत्थापन की अनुमति नहीं है
के साथ घोषित चर var
कार्यक्रम के दायरे के शीर्ष पर फहराए जाते हैं। उदाहरण के लिए,
console.log(a); var a; // undefined (not an error)
कीवर्ड let
को फहराने की अनुमति नहीं है। उदाहरण के लिए,
console.log(a); let a; // Uncaught ReferenceError: a is not defined
यदि आप उत्थापन के बारे में अधिक जानना चाहते हैं, तो जावास्क्रिप्ट उत्थापन पर जाएँ।
चलो और ब्राउज़र समर्थन
अधिकांश आधुनिक ब्राउज़र इसके उपयोग का समर्थन करते हैं let
। हालांकि, कुछ ब्राउज़र पूरी तरह से समर्थन नहीं करते हैं let
।
अधिक जानने के लिए, जावास्क्रिप्ट को ब्राउज़र का समर्थन करने दें।
नोट : वैश्विक क्षेत्र के में मामला है, दोनों var
और let
एक ही तरीके से व्यवहार करेगा। उदाहरण के लिए,
var a = 5; // 5
वेरिएबल ग्लोबल स्कॉप्ड होगा और इसे प्रोग्राम में कहीं भी एक्सेस किया जा सकता है।
let a = 5; // 5
वेरिएबल ग्लोबल स्कॉप्ड होगा और इसे प्रोग्राम में कहीं भी एक्सेस किया जा सकता है।