sintaxis - map javascript
¿Por qué no es válido `throw` en una función de flecha ES6? (3)
No puedes return throw
esto es efectivamente lo que estás tratando de hacer:
function(){
return throw 42;
}
Solo busco una razón para que esto no sea válido:
() => throw 42;
Sé que puedo solucionarlo a través de:
() => {throw 42};
Si no usa un bloque ( {}
) como cuerpo de una función de flecha , el cuerpo debe ser una expression :
ArrowFunction:
ArrowParameters[no LineTerminator here] => ConciseBody
ConciseBody:
[lookahead ≠ { ] AssignmentExpression
{ FunctionBody }
Pero throw
es una statement , no una expresión.
En teoria
() => throw x;
es equivalente a
() => { return throw x; }
lo cual tampoco sería válido.
Si omite las llaves en una función de flecha, creará un retorno implícito , que es equivalente a crear una devolución explícita con los frenos, así:
Sin embargo, solo puede devolver expressions , no statements . Y throw
es una afirmación.