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;
Advertisement
Answer
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.