DEV Community

Cover image for Short circuit evaluation
Jay Cruz
Jay Cruz

Posted on

Short circuit evaluation

What is short circuit evaluation?

In Programming, many languages use what’s called short circuit evaluation. Short circuit evaluation is the concept of skipping the evaluation of the second part of a boolean expression in a conditional statement when the entire statement has already been determined to be either true or false.

Therefore checking the part of the expression that comes after what made the statement true or false becomes unnecessary. The compiler just skips over it and moves on to the next line of code within the statement if it evaluates to true or exits the conditional statement if it evaluates to false.

Implementing short circuit evaluation in Javascript

To implement short circuit evaluation let’s try it with this conditional statement below as an example.

let isTimeToCode = true;
let needsCoffee = true;

if (!isTimeToCode && needsCoffee) {
    console.log("Make some coffee! It's time to code!");
}
Enter fullscreen mode Exit fullscreen mode

First, we’re setting both isTimeToCode and needsCoffee variables to true. Now in the expression, we’re including the ! (pronounced as the logical NOT operator) making our isTimeToCode variable point to false instead of true. Since our boolean expression (!isTimeToCode && needsCoffee) now says false and true instead of true and true, the needsCoffee part of the expression will be skipped over as there is no need to check it because the condition would evaluate as false no matter what. So it looks like we won’t be making coffee and coding today! :(

Avoiding errors with short circuit evaluation

Let’s get into a bit more complex examples to show where short circuit evaluation can really come in handy.

For example, we’ll take this Javascript object containing names of seasons during the year.

const seasons = {
    "Spring": { isMonth: (month) => month },
    "Summer": { isMonth: (month) => month },
    "Winter": { isMonth: (month) => month }
}
Enter fullscreen mode Exit fullscreen mode

Now take the conditional statement below where we are checking for a season and a month in our seasons object.

if (seasons["Fall"].isMonth("October")) {
    makeCoffee("Pumpkin Spice");
}
Enter fullscreen mode Exit fullscreen mode

What do you think will happen here since "Fall" is not in our seasons object? It’s going to throw a TypeError.

Uncaught TypeError: Cannot read properties of undefined (reading 'isMonth')

This is a situation where we can take advantage of short circuit evaluation. Let’s modify our expression to first check if "Fall" is in our seasons object, then call its isMonth() method on it.

if (seasons["Fall"] && seasons["Fall"].isMonth("October")) {
    makeCoffee("Pumpkin Spice");
}
Enter fullscreen mode Exit fullscreen mode

Here we’re using short circuit evaluation, so if our seasons does not contain "Fall" we’ll ignore the second half of the conditional and avoid getting a TypeError.

Summary

Short circuit evaluation is a helpful way to avoid performing extra or unnecessary tasks in your code. It can also be helpful with avoiding errors in certain cases such as trying to perform an action on some data that doesn’t exist.

For more on this topic, check out the resources I’ve included below.

Discussion (0)