हर उपयोगी प्रोग्राम अंततः एक निर्णय बिंदु (decision point) पर पहुँचता है। क्या इस बटन को फॉर्म सबमिट करना चाहिए या एरर दिखाना चाहिए? क्या यह यूजर एडमिन डैशबोर्ड देखेगा या गेस्ट व्यू? JavaScript इन सवालों के जवाब कंडीशनल स्टेटमेंट्स (conditional statements) के साथ देता है। वे आपके कोड के कंट्रोल वाल्व की तरह हैं: एक रास्ता खोलते हैं, दूसरा बंद करते हैं, और यह सब इस बात पर निर्भर करता है कि कोई एक्सप्रेशन true है या false। उनके बिना, आपका स्क्रिप्ट बिना यूजर की प्रतिक्रिया के ऊपर से नीचे तक चलता रहेगा।
सबसे सरल शाखा: if
if स्टेटमेंट वह गेट है जिससे आप सबसे पहले गुजरते हैं। आप कोष्ठक (parentheses) के अंदर एक कंडीशन रखते हैं। यदि वह कंडीशन true होती है, तो उसके नीचे वाला कोड ब्लॉक निष्पादित (execute) होता है। यदि वह false होती है, तो JavaScript उस ब्लॉक को पूरी तरह से छोड़ देता है और फाइल में आगे बढ़ जाता है।
सरल, एक बार होने वाले चेक के लिए आपको बिल्कुल इसी की आवश्यकता होती है। सर्वर पर कुछ भी भेजने से पहले एक फॉर्म फील्ड को वैलिडेट (validate) करने की कल्पना करें:
const email = document.getElementById("email").value;
if (email === "") {
alert("Please enter your email.");
}
कोई email नहीं, तो कोई सबमिशन नहीं। लॉजिक सीधा और स्पष्ट है। if का उपयोग तब करें जब केवल एक विशेष मामले से बचाव करना हो और किसी वैकल्पिक कार्रवाई की आवश्यकता न हो।
'या तो यह या वह' को संभालना: if...else
अधिकांश वास्तविक निर्णयों के दो पहलू होते हैं। if...else जोड़ी ठीक वही काम करती है। जब कंडीशन true होती है तो एक ब्लॉक चलता है, और जब वह false होती है तो दूसरा चलता है। ये दोनों रास्ते एक-दूसरे से अलग (mutually exclusive) होते हैं।
पेज लोड होने पर डार्क-मोड चेक की कल्पना करें:
const prefersDark = window.matchMedia("(prefers-color-scheme: dark)").matches;
if (prefersDark) {
document.body.classList.add("dark");
} else {
document.body.classList.add("light");
}
ब्राउज़र कभी भी दोनों क्लासेस को एक साथ नहीं जोड़ेगा। यह एक रास्ता चुनता है, उसे निष्पादित करता है, और आगे बढ़ जाता है। जब भी आपका लॉजिक स्पष्ट रूप से दो संभावित परिणामों में विभाजित होता है, तो आपको इसी स्ट्रक्चर का उपयोग करना चाहिए।
कई रास्ते: if...else if...else
हर समस्या बाइनरी (binary) नहीं होती। कभी-कभी आपको संभावनाओं की एक सीढ़ी की आवश्यकता होती है। if...else if...else चेन आपको क्रम में कई कंडीशंस को टेस्ट करने की अनुमति देती है। JavaScript उन्हें ऊपर से नीचे तक इवैल्यूएट करता है और पहले उस ब्लॉक को चलाता है जिसकी कंडीशन true होती है। उस मैच के बाद, बाकी की सीढ़ी को अनदेखा कर दिया जाता है।
एक क्लासिक उदाहरण एक न्यूमेरिक स्कोर को लेटर ग्रेड में मैप करना है:
const score = 87;
let grade;
if (score >= 90) {
grade = "A";
} else if (score >= 80) {
grade = "B";
} else if (score >= 70) {
grade = "C";
} else {
grade = "F";
}
यहाँ क्रम (order) बहुत महत्वपूर्ण है। यदि आप score >= 90 से पहले score >= 70 चेक करते हैं, तो लगभग हर पास होने वाला ग्रेड C कैटेगरी में ही फंस जाएगा क्योंकि जो पहला true मैच मिलेगा, वही जीत जाएगा। अपनी कंडीशंस को सबसे विशिष्ट (most specific) से सबसे कम विशिष्ट (least specific) के क्रम में रखें, और जो भी छूट जाए उसे पकड़ने के लिए हमेशा चेन के अंत में एक else का उपयोग करें।
निश्चित मानों (Fixed Values) का मिलान करना: switch
जब आप एक वेरिएबल की तुलना ज्ञात स्थिरांकों (constants) की एक सूची से कर रहे हों, तो एक लंबी if...else चेन उलझन भरी हो सकती है। switch स्टेटमेंट चीज़ों को साफ-सुथरा बना देता है। यह एक एक्सप्रेशन को एक बार इवैल्यूएट करता है, और फिर स्ट्रिक्ट इक्वैलिटी (===) का उपयोग करके इसकी तुलना case लेबल्स से करता है। जब विकल्प अलग-अलग और नाम वाले हों, तो यह कोड को पढ़ने में आसान बनाता है।
वर्तमान दिन के आधार पर स्टोर के समय को सेट करने पर विचार करें:
const day = new Date().getDay();
switch (day) {
case 0:
console.log("Sunday hours: 10am - 4pm");
break;
case 6:
console.log("Saturday hours: 9am - 6pm");
break;
default:
console.log("Weekday hours: 8am - 8pm");
}
break के साथ सावधान रहें। यदि आप इसे छोड़ देते हैं, तो निष्पादन (execution) अगले case पर चला जाता है और चलता रहता है। वह व्यवहार कभी-कभी उपयोगी होता है, लेकिन अक्सर यह साइलेंट बग्स (silent bugs) का कारण बनता है। सही ढंग से उपयोग किए जाने पर, switch आपके इरादे को एक नज़र में स्पष्ट कर देता है और संबंधित शाखाओं को एक व्यवस्थित कॉलम में रखता है।
संक्षिप्त निर्णय: टर्नरी ऑपरेटर
टर्नरी ऑपरेटर—जिसे ? : के रूप में लिखा जाता है—एक एक्सप्रेशन है, स्टेटमेंट नहीं। यह अंतर महत्वपूर्ण है।
