13

As far as I understand, short-circuiting with the logical AND && operator works like the following:

Assuming I have the expressions a and b then a && b is the same as a ? b : a since

if a is truthy then the result will be b and if a is falsy then the result will be a (without even trying to resolve b)

That being the case why is the following (demo) code throwing a SyntaxError:

var add = function(a,b) {
  b && return a+b; // if(b) return a+b
  ...
}

Is there a way to short circuit with a return statement?

0

2 Answers 2

14

The && binary operator needs both parts to be expressions.

return something is a statement but not an expression (it doesn't produce a value, as a value wouldn't be useful when the function ends).

Just use

if (b) return a+b;

with the added benefit of an easier to read code.

Read more :

Sign up to request clarification or add additional context in comments.

Comments

3

No, return is a statement, you cannot use it as a part of an AND expression.

You can transform your code to a single return statement though if you need that for some reason:

if (b) return a+b;
/* else */ ...

is (more or less) equivalent to

return b && a+b || (...);

Of course, in any code that you write by hand and read with your eyes, you should just an if statement anyway.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.