It fails because that is just not valid syntax.
Use the following to make it work:
callback = callback || (() => {})
If you don't wrap it that way, it would be interpreted as if you typed the following. But that is invalid syntax.
callback = (callback || ()) => {}
To extend on the evaluation of the assignment, see the specification of the AssignmentExpression
. It consist of a ConditionalExpression
or an ArrowFunction
(or some other expressions I will disregard). So the interpreter will try to use your code as a conditional. But the ()
itself is not valid in that context as an expression is expected inside that ParenthesizedExpression
. As a result, it will fail. If you instead group the expression as callback || (() => {})
both sides of the LogicalOrExpressions
are valid expressions.