Why is `throw` invalid in an ES6 arrow function?
If you don't use a block ({}
) as body of an arrow function, the body must be an expression:
ArrowFunction:
ArrowParameters[no LineTerminator here] => ConciseBody
ConciseBody:
[lookahead ≠ { ] AssignmentExpression
{ FunctionBody }
But throw
is a statement, not an expression.
In theory
() => throw x;
is equivalent to
() => { return throw x; }
which would not be valid either.
You can't return throw
this is effectively what you're trying to do:
function(){
return throw 42;
}