100% Free Forever
AI-Powered Learning
Industry Expert Content
Certificates & Badges
Learn At Your Own Pace
JavaScript

switch Statement in JavaScript

Learn how the switch statement compares a value against multiple cases using strict equality, and why break is essential to prevent fall-through.

Control FlowBeginner8 min readJul 8, 2026
Analogies

1. Introduction

The switch statement is an alternative to long if / else if chains when you need to compare a single value against many possible exact matches. It evaluates an expression once and then jumps to the case clause whose value matches, making multi-branch logic based on discrete values (like a day of the week, a status code, or a menu option) easier to read.

🏏

Cricket analogy: A switch statement is like a scorer checking today's fixture code once and jumping straight to Virat Kohli's match report instead of asking is it Kohli, is it Rohit, is it Dhoni one by one.

Unlike if-else, which can test arbitrary boolean conditions, switch is designed around comparing one expression to a set of candidate values using strict equality (===). This makes it well-suited for enumerated or fixed sets of cases, but less flexible than if-else for range checks or compound conditions.

🏏

Cricket analogy: Unlike an if-else chain that could check 'is the run rate above 8 AND wickets under 3', switch only checks if the over count exactly equals 10, 20, or 50 — great for fixed formats, bad for compound conditions.

2. Syntax

javascript
switch (expression) {
  case value1:
    // runs if expression === value1
    break;
  case value2:
    // runs if expression === value2
    break;
  case value3:
  case value4:
    // runs if expression === value3 OR expression === value4 (grouped cases)
    break;
  default:
    // runs if no case matched
}

3. Explanation

switch compares the switch expression to each case value using strict equality (===), meaning both type and value must match — there is no type coercion, unlike the loose equality (==) operator. So switch (5) will not match case '5':, because 5 (number) !== '5' (string).

🏏

Cricket analogy: switch compares strictly, so if the scoreboard stores the over number as 20 (a number), a case labeled '20' (a string jersey number) won't match — type and value both must agree, just like a fixture number must match exactly.

Execution begins at the matching case label and then continues sequentially through the following case blocks unless a break statement (or return, in a function) stops it. This behavior is called 'fall-through'. Fall-through can be used intentionally to group multiple cases together, as shown with case value3 / case value4 above, but if a break is accidentally omitted, execution silently continues into the next case's code, which is a very common source of bugs.

🏏

Cricket analogy: Fall-through means once execution matches Six it keeps running through the Four and Single scoring code too unless a break stops it — useful to group boundary cases together, but a forgotten break silently double-counts runs.

switch uses strict === comparison, so type mismatches never match. Also, every case block should end with break (or return/throw) unless fall-through is deliberate — forgetting break causes execution to 'fall through' into the next case, running code that was not intended to run. The default clause, if present, catches any value that did not match a case, but it does not have to be written last (though that is the convention); without a trailing break on default followed by more cases, fall-through rules still apply.

4. Example

javascript
function describeDay(day) {
  switch (day) {
    case 'Sat':
    case 'Sun':
      return 'Weekend';
    case 'Mon':
    case 'Tue':
    case 'Wed':
    case 'Thu':
    case 'Fri':
      return 'Weekday';
    default:
      return 'Unknown day';
  }
}

console.log(describeDay('Sun'));
console.log(describeDay('Wed'));
console.log(describeDay('Xyz'));

// Demonstrating strict comparison: no match because of type mismatch
const value = 5;
switch (value) {
  case '5':
    console.log('matched string 5');
    break;
  case 5:
    console.log('matched number 5');
    break;
  default:
    console.log('no match');
}

5. Output

text
Weekend
Weekday
Unknown day
matched number 5

6. Key Takeaways

  • switch compares an expression to case values using strict equality (===), so types must match exactly.
  • Each case should end with break, return, or throw to prevent unintended fall-through into the next case.
  • Grouping multiple case labels together with no code between them is a valid way to share one block for several values.
  • The default clause runs when no case matches; it is commonly placed last but is not required to be.
  • switch is best for a fixed set of exact-value comparisons; if-else is better for ranges or compound boolean logic.

Practice what you learned

Was this page helpful?

Topics covered

#JavaScript#JavaScriptProgrammingStudyNotes#Programming#SwitchStatementInJavaScript#Switch#Statement#Syntax#Explanation#StudyNotes#SkillVeris