JavaScript में if-else में वेरिएबल्स का स्कोप

सरलता के लिए मान लें कि हमारे पास हमेशा निष्पादित होने वाली शर्त है:

javascriptif (true) {
  
}

आइए निम्नलिखित कोड पर विचार करें:

javascriptif (true) {
  let res = '!';
}

console.log(res);

जैसा कि आप देख रहे हैं, वेरिएबल res में मान '!' लिखा जाना चाहिए। हालाँकि, यदि इस कोड को चलाया जाता है, तो कंसोल में एरर दिखाई देगी!

बात यह है कि वेरिएबल्स, जिन्हें करली ब्रेसिज़ के अंदर घोषित किया गया है, केवल उन्हीं ब्रेसिज़ के अंदर दिखाई देते हैं, और बाहर दिखाई नहीं देते। वैज्ञानिक रूप से यहाँ वेरिएबल्स के स्कोप की बात की जा रही है।

यह कहा जा सकता है कि करली ब्रेसिज़ के अंदर घोषित वेरिएबल्स का स्कोप केवल वही करली ब्रेसिज़ होती हैं। हालाँकि, यदि वेरिएबल को करली ब्रेसिज़ के बाहर घोषित किया गया है, तो वह अंदर और बाहर दोनों जगह दिखाई देती है:

javascriptlet res; // वेरिएबल बाहर घोषित की गई है

if (true) {
  res = '!';
}

console.log(res); // '!' आउटपुट करेगा

निम्नलिखित उदाहरण में वेरिएबल res में शर्त के आधार पर या तो मान 1, या मान 2 लिखा जाता है:

javascriptlet num = 5;

if (num >= 0) {
  let res = 1;
} else {
  let res = 2;
}

console.log(res);

हालाँकि, यदि इस कोड को चलाया जाता है, तो कंसोल में एरर दिखाई देगी। जैसा कि आप अब समझ गए होंगे, पूरी बात वेरिएबल्स की विजिबिलिटी में है। समस्या के समाधान के लिए वेरिएबल को कंडीशन के बाहर घोषित करें:

javascriptlet test = true;
let res; // वेरिएबल को कंडीशन के बाहर घोषित करें

if (test) {
  res = 1;
} else {
  res = 2;
}

console.log(res); // 1 आउटपुट करेगा
Задание 1

नीचे दिए गए कोड के लेखक 18 वर्ष की आयु तक पहुँचने की जाँच करना चाहते थे। हालाँकि, कोड काम नहीं कर रहा है। कोड लेखक की गलती सुधारें। यहाँ समस्या वाला कोड है:

javascriptlet age = 17;

if (age >= 18) {
  let adult = true;
} else {
  let adult = false;
}

console.log(adult);