run_the_race
run_the_race

Reputation: 2368

Why some statements can't be used with boolean operators

I like to use this style for single line conditional function calls:

debug && console.log('Debug is on');

It's much more terse than it's if counter part.

However some statements dont work, e.g. return and debugger:

error && return null
(value == '43') && debugger;

Why does it not work for the above statements? Instead I use:

if (error) return null;
if (value == '43') debugger;

Upvotes: 0

Views: 93

Answers (2)

Jared Smith
Jared Smith

Reputation: 21926

For the same reason you can't say things like these:

const foo = if (bar) { 5 } else { "hi" };
const baz = try { somethingThatCanFail(); } catch (err) { console.error(err); fallback(); };

Javascript, like a lot of other programming languages, retains the difference between an expression and a statement. You can't use a statement in a place where syntactically an expression is expected.

Expressions evaluate to a value, even if that value is undefined. An invocation of a function is an expression. Even an assignment is an expression. But things like try, return, and if are statements.

In some programming languages (notably most functional languages) everything is an expression and evaluates to a value.

Upvotes: 2

Joey Carlisle
Joey Carlisle

Reputation: 835

When you use the boolean operator, it has to be an expression, not a statement. Some of those keywords/operators are only valid full statements

Here is a related question to explain more Why can't we have return in the ternary operator?

Upvotes: 1

Related Questions