JavaScript switch statement

JavaScript: Switch Statement

The switch statement in JavaScript is a powerful tool that allows you to compare a single value against multiple possible conditions. It’s often used when you have several possible values for a variable, and you want to run different code based on each value.

Instead of writing long chains of if-else statements, a switch statement helps make your code cleaner, easier to read, and more efficient when dealing with multiple comparisons. It works by checking the value of an expression and running the code block that matches a specific case.

The goal of this article is to show you how to use the switch statement effectively in JavaScript, including different examples of its usage in various situations.

Basic Syntax of switch

The switch statement checks a given expression and compares it against several possible cases. If the value matches one of the cases, the corresponding code block is executed.

Here’s the basic structure:

switch (expression) {

  case value1:
    // Code block to execute if expression === value1
    break;

  case value2:
    // Code block to execute if expression === value2
    break;

  default:
    // Code block to execute if no case matches
}

Let’s break down each part:

  • expression: This is the value or variable you’re checking. It’s the expression that will be compared to the values in each case.
  • case values: These are the different possible values you’re comparing the expression against. If the expression matches one of the case values, the corresponding code block will execute.
  • break: This statement tells JavaScript to exit the switch after executing the code block for the matching case. Without break, the code will “fall through” to the next case, which is usually not what you want.
  • default: This is an optional part. It defines a block of code that runs when none of the case values match the expression. It’s like a catch-all for unhandled cases.

Here’s a basic example of using a switch statement:

const day = 3;

switch (day) {

  case 1:
    console.log('Monday');
    break;

  case 2:
    console.log('Tuesday');
    break;

  case 3:
    console.log('Wednesday');
    break;

  default:
    console.log('Other day');

}

In this example, the day is 3, so it matches the case 3 and logs "Wednesday". The break ensures the program doesn’t continue to check other cases.

Using switch for Simple Conditions

The switch statement is especially useful when you have a simple condition and need to compare a value against several potential options. Each case provides an exact match for the value, and if a match is found, the corresponding code block runs.

Here’s an example where we check the day of the week using switch:

const day = 2;

switch (day) {

  case 1:
    console.log('Monday');
    break;

  case 2:
    console.log('Tuesday');
    break;

  default:
    console.log('Other day');

}

In this example, the day variable is 2, which matches the case 2. The switch statement executes the code inside the matching case and prints "Tuesday". If day were something other than 1 or 2, the default case would be triggered, printing "Other day".

This method of using switch makes checking multiple conditions much more organized compared to multiple if-else statements.

Using switch with Strings

In addition to numbers, the switch statement in JavaScript also works perfectly with strings. You can use switch to compare string values just like you would with numbers.

Here’s an example where we compare the value of the color variable to different string values:

const color = 'red';

switch (color) {

  case 'blue':
    console.log('Color is blue');
    break;

  case 'red':
    console.log('Color is red');
    break;

  default:
    console.log('Unknown color');

}

In this example, the color variable is 'red', which matches the case 'red'. The switch statement executes the code inside the matching case, printing "Color is red". If color had been something else, like 'green', the default case would be triggered, printing "Unknown color".

This makes switch a great tool for checking string values and executing code based on specific options, especially when you have multiple conditions to check.

Using Multiple case Statements

Sometimes, you might want multiple cases to trigger the same code block. With the switch statement, you can stack several case values together to share the same behavior, without repeating the code for each case.

Here’s an example where different months (January, February, March) all lead to the same output:

const month = 4;

switch (month) {

  case 1:
  case 2:
  case 3:
    console.log('First quarter');
    break;

  default:
    console.log('Not in the first quarter');

}

In this example, the month is 4, which doesn’t match 1, 2, or 3. The code block inside the default case executes, printing "Not in the first quarter". However, if month were 1, 2, or 3, the code block would execute the same action: "First quarter". This technique is useful when multiple values should trigger the same behavior, making your code more efficient and easier to read.

This feature allows you to handle grouped conditions concisely, without having to repeat the same console.log in each case.

Using default with switch

The default case in a switch statement serves as a fallback. It is executed when none of the case values match the expression being evaluated. This is useful for handling unknown, unexpected, or invalid input.

Here’s an example where we handle a case for an unrecognized fruit:

const fruit = 'apple';

switch (fruit) {

  case 'banana':
    console.log('Banana selected');
    break;

  default:
    console.log('Fruit not recognized');

}

In this example, the fruit is 'apple', which doesn’t match the case 'banana'. Because of this, the code falls through to the default case and prints "Fruit not recognized". The default case can handle any value that doesn’t match the specified cases, making it a catch-all for unexpected inputs.

Using default ensures your program behaves predictably, even when encountering values that are outside the expected range of options.

switch with Complex Expressions (No break)

In some situations, you might intentionally omit the break statement to allow for case fall-through. This means that if a case doesn’t include a break, the code will continue to execute the code blocks of subsequent cases, even if they don’t match the expression.

Here’s an example where one case leads to multiple executions:

const grade = 'B';

switch (grade) {

  case 'A':
    console.log('Excellent');
    break;

  case 'B':
    console.log('Good');
  case 'C':
    console.log('Average');
    break;

  default:
    console.log('Fail');

}

In this example, the grade is 'B', so the case 'B' matches, and it prints "Good". Since there is no break after case 'B', the code continues to the next case, case 'C', and prints "Average". If there was a break in case 'B', the code would stop executing further, and only "Good" would be printed.

This fall-through behavior can be useful when multiple cases should trigger similar actions, but it can sometimes lead to unintended behavior if not used carefully. Make sure to understand when and why you might omit a break to ensure your code behaves as expected.

Using switch for Multiple Conditions

Although the switch statement typically compares a single expression to several values, you can also use it for more complex conditions by evaluating boolean expressions directly. This approach allows you to check multiple conditions within the case statements.

Here’s an example where we check the value of age to determine if someone is an adult or a minor:

const age = 25;

switch (true) {

  case age >= 18:
    console.log('Adult');
    break;

  case age < 18:
    console.log('Minor');
    break;

}

In this example, the switch statement checks the boolean expression true against the cases. The first case evaluates whether age >= 18. Since age is 25, this condition is true, and the code inside that case runs, printing "Adult". If age had been less than 18, the second case would have been triggered, printing "Minor".

This pattern allows you to use switch in more dynamic situations where you might need to check for multiple conditions or ranges, rather than just simple exact values.

When to Use switch vs if-else

Both switch and if-else statements are used to handle conditional logic, but each has its strengths depending on the scenario. Understanding when to use one over the other can make your code cleaner and more efficient.

When to Use switch

Multiple Conditions on the Same Value: If you need to compare the same expression to different values (especially when there are many options), switch is a cleaner, more readable choice.

Exact Matches: switch works best when you need exact matches (such as checking a single variable against several constants).

Example – checking the day of the week:

const day = 3;

switch (day) {

  case 1:
    console.log('Monday');
    break;

  case 2:
    console.log('Tuesday');
    break;

  case 3:
    console.log('Wednesday');
    break;

  default:
    console.log('Unknown day');

}

This example works well with switch because you’re checking the value of day against many possible constants (1, 2, 3, etc.). The structure is clear, and it’s easy to add more conditions.

When to Use if-else

Complex Conditions: If your conditions involve more complex logic (such as comparing different variables or using operators), if-else is a better choice.

Non-Exact Comparisons: If you’re comparing ranges or using logical operators (like && or ||), if-else is more flexible.

Example – checking if a person is eligible to vote:

const age = 20;

if (age >= 18) {

  console.log('Eligible to vote');

} else {

  console.log('Not eligible to vote');

}

This is a simple condition where the check is based on a comparison (age >= 18). if-else is straightforward here, and it’s more appropriate since the logic is based on a single condition, not multiple values.

Summary

  • Use switch when you need to compare a single value against many possible exact matches.
  • Use if-else when you have more complex conditions or need to evaluate ranges or logical expressions.

By choosing the right structure based on your specific needs, your code will be more readable and easier to maintain.

Conclusion

In this article, we’ve explored how the switch statement in JavaScript can be a powerful tool for simplifying multi-condition checks. By using switch, you can avoid complex if-else chains and make your code more readable when you need to compare a single expression against multiple values.

We’ve covered a variety of scenarios where switch is useful, including:

  • Basic syntax and simple condition checks.
  • Working with strings, multiple case statements, and default as a fallback.
  • Advanced uses like case fall-through and evaluating complex conditions.

Remember that switch shines when you’re working with exact matches or need to handle several different conditions with the same value. Experiment with it in your own projects to make your code cleaner, more concise, and easier to understand.

Scroll to Top