if स्टेटमेंट के अलावा JavaScript में switch स्टेटमेंट भी होता है, जिससे शर्त के आधार पर कोड चलाया जा सकता है।
इसका उपयोग तब किया जाता है जब एक ही वेरिएबल की तुलना कई अलग-अलग रूपों से करनी हो।
तुलना करते समय सख्त समानता (===) जाँची जाती है, देखिए तुलना कॉन्सेप्ट।
किसी वेरिएबल x के लिए JavaScript में switch स्टेटमेंट का सिंटैक्स इस प्रकार होता है।
switch (x) {
case option1:
// code that is executed when "x === option1" is true
break;
case option2:
// code that is executed when "x === option2" is true
break;
default:
// code that is executed when x does not equal any of the
// options
}
default केस वैकल्पिक होता है। इसका उपयोग तब किया जाता है जब वेरिएबल किसी भी अन्य विकल्प से मेल न खाता हो और आप कुछ कोड चलाना चाहते हों।
ऊपर दिए break स्टेटमेंट इसलिए ज़रूरी हैं क्योंकि JavaScript में डिफ़ॉल्ट रूप से सभी केस "फॉलथ्रू" होते हैं।
इसका मतलब है कि बिना break स्टेटमेंट के पहले मेल खाने वाले विकल्प के नीचे लिखे सभी केसों का कोड चल जाएगा, भले ही x उन विकल्पों से मेल न खाता हो।
JavaScript में switch इस्तेमाल करते समय यह "डिफ़ॉल्ट फॉलथ्रू" व्यवहार एक आम गलती है।
इस समस्या से बचने के लिए फंक्शन के अंदर break की जगह return का भी उपयोग किया जा सकता है।
जब आपको एक ही कोड कई केसों पर लागू करना हो, तो आप फॉलथ्रू व्यवहार का फ़ायदा उठा सकते हैं। इसका एक उदाहरण आपको MDN के डॉक्युमेंटेशन में मिलेगा।
डिफ़ॉल्ट रूप से अलग-अलग case स्टेटमेंट के वेरिएबल एक ही स्कोप साझा करते हैं।
इससे अनपेक्षित व्यवहार हो सकता है।
उदाहरण के लिए, किसी केस को कॉपी-पेस्ट करने की वजह से आप दो केसों में let message घोषित कर बैठ सकते हैं, जिससे एक एरर मिलती है। इस बारे में MDN के डॉक्युमेंटेशन देखिए।
साझा स्कोप की वजह से होने वाली समस्याओं से बचने के लिए आप हर केस स्टेटमेंट के लिए कर्ली ब्रैकेट वाले कोड ब्लॉक जोड़कर उसका अलग स्कोप बना सकते हैं।
switch (x) {
case option1: {
// Variables declared here are contained to this case.
break;
}
case option2: {
// ...
break;
}
default: {
// ...
}
}
वेरिएबल x की जगह आप एक एक्सप्रेशन का भी उपयोग कर सकते हैं।
switch स्टेटमेंट की शुरुआत में इस एक्सप्रेशन का मूल्यांकन एक बार किया जाता है और परिणाम की तुलना सभी केसों से की जाती है।
इसका एक आम उपयोग "टाइप स्विच" है, जो वेरिएबल के टाइप के आधार पर अलग-अलग कोड चलाता है।
switch (typeof x) {
case 'string':
// code that is executed when x is a string
break;
case 'number':
// code that is executed when x is a number
break;
default:
// code that is executed when x has some other type
}
विकल्प एक्सप्रेशन भी हो सकते हैं।