loading...
Cover image for Basics of switch cases and defaults

Basics of switch cases and defaults

jennakoslowski profile image JennaKoslowski ・2 min read

Switch cases were one of my favorite things to learn (and to use). Granted, they aren't always the best thing to use but when used I feel it makes the code cleaner than using if/else statements as well as slightly faster.

What is a switch case?

A switch case is a chunk of code that will perform differently depending on the result of the expression passed through.

The difference between the if/else statement and a switch is that in a switch statement you can continue to go through the statement even if one of the conditions is met. If not you can create a break statement.

Syntax:

(taken from w3schools)

switch(expression) {
  case x:
    // code block
    break;
  case y:
    // code block
    break;
  default:
    // code block
} 

Example in practice:

var x = 2;

switch(x){
    case 0:
      console.log("Saturday");
      break;
    case 1:
      console.log("Sunday");
      break;
    default:
      console.log("You have to work.");
      break;
}

This would return "You have to work." since the expression isn't equal to 0 or 1.

In comparison this is what the code looks like as an if/else statement:

var x = 2;

if (x==0){
   console.log("Saturday");
}
else if(x==1){
    console.log("Sunday");}
else{
   console.log("You have to work.");
}

What should be the default?

I used to think it didn't matter but today I was working on the "Who likes it" kata on CodeWars and it clicked. The default is if it's equal to anything not previously covered.

For example, I had the default as if no one likes the status it will return "no one likes this." (which, harsh but okay.) However, it was failing on the attempt tests because where I had case 4 as listing any other number after 3 people liking it, that was only catching exactly 4 people. The switch statements only work for that number. They don't work for ranges as if/else statements can.

The solution to this was to make the return of "no one likes this" as a case 0.

Let me know if you have any questions below!

Posted on by:

jennakoslowski profile

JennaKoslowski

@jennakoslowski

Self-taught dev. Lover of reading and the gym.

Discussion

pic
Editor guide
 

The BIG problem with switch/case/if/then/else (especially among newly devs) is that they can invite you to write really bad code and design.

This is especially the case when these are used repetitively and thus encode a lot of invariance. Usually, such structures could (and should) be replaced by polymorphism, list structures, functional approaches and/or other means.

 

I've definitely noticed myself leaning on those when I know there are other ways to do what I need to do (especially working with arrays) so I've been trying not to lean on them as much. I think it's because it's clearer logic but I'm definitely going to go look at what you listed!