Reputation: 2368
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
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
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