← Back to JavaScript Course | Chapter 4: Modern JS, Async & DOM | Lesson 4 of 26

JS स्विच

एक vending machine के बारे में सोचें, आप एक खास बटन दबाते हैं, और मशीन उसे हर labeled slot से मिलाकर जांचती है जब तक कि उसे match न मिल जाए, फिर वही exact item देती है, बाकी सभी बटनों को नज़रअंदाज़ करते हुए। JavaScript में एक switch statement भी ऐसे ही काम करता है, यह एक value को कई संभावित cases से मिलाकर compare करता है, और जो भी case match करता है उसका code चलाता है, जो एक single value को कई options से जांचते समय else if statements की लंबी chain से ज़्यादा साफ हो सकता है। आप cookiescursor.com जैसी sites पर अलग-अलग menu selections या theme choices को संभालने जैसी चीज़ों के लिए switch इस्तेमाल होते हुए देखेंगे।
Syntax
javascript
switch (expression) {
  case value1:
    // code
    break;
  default:
    // code
}

Basic switch Syntax

एक switch statement parentheses में एक value लेता है और उसे क्रम में हर case label से compare करता है, और पहली मैच होने वाली case block के अंदर का code चलाता है।

Note: जब आप एक ही variable को कई संभावित values से compare कर रहे हों, तो switch अक्सर लंबी else if chain से ज़्यादा readable होता है।
Warning: switch अंदर से strict comparison इस्तेमाल करता है, इसलिए compare की जा रही value का type case label से बिल्कुल मेल खाना चाहिए, 1 और 1 बराबर नहीं माने जाते।

उदाहरण: Basic switch Syntax

javascript
// Declare the constant `day`, set to "Mon"
// Declare the constant `day`, set to "Mon"
const day = "Mon";
// Switch on `day` and branch by matching case
// Switch on `day` and branch by matching case
switch (day) {
  // Case: `"Mon"`
  // Case: `"Mon"`
  case "Mon":
    // Print "Start of week" to the console
    // Print "Start of week" to the console
    console.log("Start of week");
}

case और break

हर case label किसी खास matching value के लिए चलने वाले block की शुरुआत बताता है, और break उसका block खत्म होते ही switch statement से तुरंत बाहर निकल जाता है, जिससे execution अगले case में जारी नहीं रहता।

Note: एक आदत के तौर पर, हर case के अंत में हमेशा break लगाएं, जब तक कि आप जानबूझकर अगले case में fall through नहीं करना चाहते।
Warning: break न लगाने से fall-through होता है, execution अगले case का code भी चलाना जारी रखता है, भले ही उसकी condition match नहीं हुई थी।

उदाहरण: case and break

javascript
// Declare the constant `day`, set to "Mon"
// Declare the constant `day`, set to "Mon"
const day = "Mon";
// Switch on `day` and branch by matching case
// Switch on `day` and branch by matching case
switch (day) {
  // Case: `"Mon"`
  // Case: `"Mon"`
  case "Mon":
    // Print "Monday" to the console
    // Print "Monday" to the console
    console.log("Monday");
    break;
  // Case: `"Tue"`
  // Case: `"Tue"`
  case "Tue":
    // Print "Tuesday" to the console
    // Print "Tuesday" to the console
    console.log("Tuesday");
    break;
}

default

default case तब चलता है जब लिस्ट में से कोई भी case label switch value से मैच नहीं करता, यह if/else if chain में आखिरी else की तरह काम करता है, और आमतौर पर सबसे आखिर में रखा जाता है, हालांकि technically यह कहीं भी आ सकता है।

Note: हमेशा एक default case शामिल करें, भले ही वह सिर्फ किसी unexpected value को log करे, यह unmatched cases को debug करना कहीं आसान बना देता है।
Warning: बिना default case के, कोई matching case न होने पर switch statement बस कुछ नहीं करता, जो bugs को चुपचाप छिपा सकता है।

उदाहरण: default

javascript
// Declare the constant `day`, set to "Sun"
// Declare the constant `day`, set to "Sun"
const day = "Sun";
// Switch on `day` and branch by matching case
// Switch on `day` and branch by matching case
switch (day) {
  // Case: `"Mon"`
  // Case: `"Mon"`
  case "Mon":
    // Print "Weekday" to the console
    // Print "Weekday" to the console
    console.log("Weekday");
    break;
  // Default case, if nothing above matched
  // Default case, if nothing above matched
  default:
    // Print "Not Monday" to the console
    // Print "Not Monday" to the console
    console.log("Not Monday");
}

Cases को साथ Group करना

कई case labels एक ही block of code को साझा कर सकते हैं अगर उन्हें बीच में break के बिना stack किया जाए, जिससे कई अलग-अलग values एक ही response trigger कर सकें।

Note: Grouped cases खासतौर पर कई equivalent inputs संभालने के लिए काम आते हैं, जैसे Sat और Sun दोनों का मतलब weekend होना।
Warning: grouped stack में सिर्फ सबसे आखिरी case में break होना चाहिए, पहले कहीं break लगाने से group एक साथ काम नहीं कर पाएगा।

उदाहरण: Grouping Cases Together

javascript
// Declare the constant `day`, set to "Sat"
// Declare the constant `day`, set to "Sat"
const day = "Sat";
// Switch on `day` and branch by matching case
// Switch on `day` and branch by matching case
switch (day) {
  // Case: `"Sat"`
  // Case: `"Sat"`
  case "Sat":
  // Case: `"Sun"`
  // Case: `"Sun"`
  case "Sun":
    // Print "Weekend" to the console
    // Print "Weekend" to the console
    console.log("Weekend");
    break;
  // Default case, if nothing above matched
  // Default case, if nothing above matched
  default:
    // Print "Weekday" to the console
    // Print "Weekday" to the console
    console.log("Weekday");
}

switch बनाम if-else

जब एक single value को कई specific possibilities से compare करना हो तो switch आमतौर पर ज़्यादा साफ होता है, जबकि ranges, कई variables, या logical combinations वाली जटिल conditions के लिए if-else chains ज़्यादा flexible हैं।

Note: अगर आपकी conditions में ranges शामिल हों, जैसे score >= 60, तो if-else पर ही टिके रहें, switch exact value matching के लिए बना है, ranges के लिए नहीं।
Warning: switch (true) जैसी tricks इस्तेमाल करके range-based logic को switch statement में जबरदस्ती फिट करने की कोशिश, code को साफ करने के बजाय confusing बना सकती है।

उदाहरण: switch vs if-else

javascript
const num = 5;
// switch is clean for one value vs many options:
switch (num) {
  case 5:
    console.log("Five");
    break;
}
// if-else is better for ranges:
if (num > 0 && num < 10) {
  console.log("Single digit");
}
Live Example
Related Topics
{# common_mistakes/chapter_summary/browser_support: on Hindi pages the view already swaps in the hi_ translation fields (or blanks these out if untranslated), so this renders correctly for both languages without a lang_code check here. #}
आम गलतियां
  1. किसी case के अंत में break statement भूल जाना, जिससे execution गलती से अगले case में fall through हो जाता है।
  2. यह उम्मीद करना कि switch == जैसी loose equality इस्तेमाल करता है, यह असल में cases match करते समय ===, जैसी strict comparison इस्तेमाल करता है।
  3. default case छोड़ देना, जो listed cases में से कोई भी match न होने पर चुपचाप कुछ नहीं करता।
चैप्टर सारांश
  • switch एक value को case labels की एक series के against compare करता है और matching block चलाता है।
  • break किसी match मिलने के बाद execution को अगले case में fall through होने से रोकता है।
  • default एक fallback block देता है जो कोई case match न होने पर चलता है, if chain में else जैसा।
ब्राउज़र सपोर्ट

switch statement एक core JavaScript feature है जो हर browser और JavaScript environment में समान रूप से supported है।

Login to run this code

C/C++/Java/PHP execution requires a free account. Your code is saved — you'll land right back in the editor after logging in.