There are a bunch of ways to handle conditional logic in JavaScript. These include the if statement, ternary operator, and short-circuit evaluation, among others. But I rarely see the switch statement used, and I think it's perhaps because developers aren't sure when to use it instead of an if statement.

The switch statement is best used when you want to check multiple values of a single expression.

Let's look at an example.

I was recently rebuilding my Countdown Timer - Start and Pause Buttons project for the Vanilla JS Academy. I had multiple click handlers—start(), pause(), and reset()—that I was conditionally calling within a handleClick() function:

/**
* Handle click events
* @param {Event} event The Event interface
*/

function handleClick (event) {
// Start the timer
if (event.target.id === 'start') {
start();
return;
}

// Pause the timer
if (event.target.id === 'pause') {
pause();
return;
}

// Reset the timer
if (event.target.id === 'reset') {
reset();
}
}

There's nothing wrong with this. It's nice and readable.

However, notice that the three if statements are all checking the value of the same event.target.id property. It seems a bit superfluous to keep rewriting the same if (event.target.id === 'string') pattern over and over again.

This is the perfect place to use a switch statement instead:

/**
* Handle click events
* @param {Event} event The Event interface
*/

function handleClick (event) {
switch (event.target.id) {
case 'start':
start();
break;
case 'pause':
pause();
break;
case 'reset':
reset();
}
}

As you can see, I'm using the switch statement to check a single expression: the value of event.target.id. Then I have multiple cases to handle different values for that expression. It saves me from having to write the if (event.target.id === 'string') pattern over and over again.

For more information, I recommend reading about the switch statement in the MDN Web Docs.