2015-08-20 5 views

risposta

22

Se non si utilizza un blocco ({}) come corpo di un arrow function, il corpo deve essere un expression:

ArrowFunction: 
    ArrowParameters[no LineTerminator here] => ConciseBody 

ConciseBody: 
    [lookahead ≠ { ] AssignmentExpression 
    { FunctionBody } 

Ma throw è un statement, non è un'espressione.


In teoria

() => throw x; 

è equivalente a

() => { return throw x; } 

che non sarebbe valida sia.

2

Non si può return throw questo è effettivamente ciò che si sta cercando di fare:

function(){ 
    return throw 42; 
}