JavaScript में if-else में वेरिएबल्स का स्कोप
सरलता के लिए मान लें कि हमारे पास हमेशा निष्पादित होने वाली शर्त है:
if (true) {
}
आइए निम्नलिखित कोड पर विचार करें:
if (true) {
let res = '!';
}
console.log(res);
जैसा कि आप देख रहे हैं, वेरिएबल res में
मान '!' लिखा जाना चाहिए। हालाँकि,
यदि इस कोड को चलाया जाता है, तो कंसोल में
एरर दिखाई देगी!
बात यह है कि वेरिएबल्स, जिन्हें करली ब्रेसिज़ के अंदर घोषित किया गया है, केवल उन्हीं ब्रेसिज़ के अंदर दिखाई देते हैं, और बाहर दिखाई नहीं देते। वैज्ञानिक रूप से यहाँ वेरिएबल्स के स्कोप की बात की जा रही है।
यह कहा जा सकता है कि करली ब्रेसिज़ के अंदर घोषित वेरिएबल्स का स्कोप केवल वही करली ब्रेसिज़ होती हैं। हालाँकि, यदि वेरिएबल को करली ब्रेसिज़ के बाहर घोषित किया गया है, तो वह अंदर और बाहर दोनों जगह दिखाई देती है:
let res; // वेरिएबल बाहर घोषित की गई है
if (true) {
res = '!';
}
console.log(res); // '!' आउटपुट करेगा
निम्नलिखित उदाहरण में वेरिएबल res में
शर्त के आधार पर या तो
मान 1, या मान 2 लिखा जाता है:
let num = 5;
if (num >= 0) {
let res = 1;
} else {
let res = 2;
}
console.log(res);
हालाँकि, यदि इस कोड को चलाया जाता है, तो कंसोल में एरर दिखाई देगी। जैसा कि आप अब समझ गए होंगे, पूरी बात वेरिएबल्स की विजिबिलिटी में है। समस्या के समाधान के लिए वेरिएबल को कंडीशन के बाहर घोषित करें:
let test = true;
let res; // वेरिएबल को कंडीशन के बाहर घोषित करें
if (test) {
res = 1;
} else {
res = 2;
}
console.log(res); // 1 आउटपुट करेगा
नीचे दिए गए कोड के लेखक 18 वर्ष की आयु तक पहुँचने की
जाँच करना चाहते थे।
हालाँकि, कोड काम नहीं कर रहा है। कोड लेखक की
गलती सुधारें। यहाँ समस्या वाला कोड है:
let age = 17;
if (age >= 18) {
let adult = true;
} else {
let adult = false;
}
console.log(adult);