JavaScript switch/case statements
last modified April 16, 2025
In this article we show how to use the switch and case
keywords to create conditional statements in JavaScript.
The switch/case statement
The switch statement evaluates an expression and executes code
based on matching cases. It provides an alternative to long if-else chains
when testing a single value against multiple possibilities.
Each case represents a possible match for the switch expression.
When a match is found, the corresponding code block executes until a
break statement is encountered.
The default case executes when no matches are found. While
optional, it's good practice to include a default case for handling
unexpected values.
Basic switch statement
The following example demonstrates the basic structure of a switch statement.
let day = 3;
let dayName;
switch (day) {
case 1:
dayName = 'Monday';
break;
case 2:
dayName = 'Tuesday';
break;
case 3:
dayName = 'Wednesday';
break;
case 4:
dayName = 'Thursday';
break;
case 5:
dayName = 'Friday';
break;
default:
dayName = 'Weekend';
}
console.log(dayName);
This code converts a numeric day to its corresponding name. The switch evaluates the day variable and executes the matching case. Without break statements, execution would "fall through" to subsequent cases.
$ node main.js Wednesday
Fall-through behavior
JavaScript switch statements exhibit fall-through behavior by default.
let grade = 'B';
let message;
switch (grade) {
case 'A':
case 'B':
case 'C':
message = 'Passing grade';
break;
case 'D':
message = 'Barely passing';
break;
case 'F':
message = 'Failing grade';
break;
default:
message = 'Unknown grade';
}
console.log(message);
Here multiple cases share the same code block. Grades A, B, and C all result in the same message. This demonstrates intentional fall-through, which can be useful for grouping related cases together.
$ node main.js Passing grade
Strict comparison
Switch statements use strict comparison (===) when matching cases.
let value = '5';
switch (value) {
case 5:
console.log('Number 5');
break;
case '5':
console.log('String "5"');
break;
default:
console.log('Unknown value');
}
This example shows that the string '5' doesn't match the number 5 due to strict type comparison. The switch statement distinguishes between different data types when evaluating cases.
$ node main.js String "5"
Using expressions in cases
Case labels can contain expressions that evaluate to constant values.
let score = 85;
let grade;
switch (true) {
case score >= 90:
grade = 'A';
break;
case score >= 80:
grade = 'B';
break;
case score >= 70:
grade = 'C';
break;
case score >= 60:
grade = 'D';
break;
default:
grade = 'F';
}
console.log(grade);
This technique uses boolean expressions in cases by switching on true. Each case is evaluated until a matching condition is found. It provides a clean alternative to complex if-else chains for range checking.
$ node main.js B
Switch with multiple conditions
Switch statements can handle multiple conditions in a single case.
let fruit = 'apple';
let color;
switch (fruit) {
case 'apple':
case 'strawberry':
color = 'red';
break;
case 'banana':
case 'lemon':
color = 'yellow';
break;
case 'orange':
color = 'orange';
break;
default:
color = 'unknown';
}
console.log(color);
This example groups fruits by color. Multiple fruits can share the same color assignment. The switch statement provides a clean way to handle these grouped conditions without repetitive code.
$ node main.js red
Switch vs if-else
Switch statements often provide cleaner code than equivalent if-else chains.
let browser = 'Firefox';
switch (browser) {
case 'Chrome':
case 'Firefox':
case 'Safari':
console.log('Supported browser');
break;
case 'IE':
console.log('Deprecated browser');
break;
default:
console.log('Unknown browser');
}
The switch version is more readable than a series of if-else statements when checking multiple exact matches. It clearly shows all possible cases and their corresponding actions in a structured format.
$ node main.js Supported browser
Practical example: command processor
Here's a practical example of using switch to process different commands.
function processCommand(cmd) {
switch (cmd.toLowerCase()) {
case 'start':
console.log('Starting system...');
break;
case 'stop':
console.log('Stopping system...');
break;
case 'restart':
console.log('Restarting system...');
break;
case 'status':
console.log('System status: OK');
break;
default:
console.log(`Unknown command: ${cmd}`);
}
}
processCommand('START');
processCommand('status');
processCommand('backup');
This command processor demonstrates how switch can handle different input commands. The toLowerCase() ensures case-insensitive matching. The default case handles invalid commands gracefully.
$ node main.js Starting system... System status: OK Unknown command: backup
Source
In this article we have demonstrated how to use the switch and case keywords to create conditional statements in JavaScript.