usar sintaxis funciones funcion flecha example ecmascript cuando anonimas javascript ecmascript-6 arrow-functions

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.