Почему `throw` недопустимо в функции стрелки ES6?

Я просто ищу причину, чтобыЗачем это неверно:

() => throw 42;

Я знаю, что могу обойти это через:

() => {throw 42};

Ответы на вопрос(3)

неявное возвращение, что эквивалентно созданию явного возврата с фигурными скобками, например так:() => { return throw 42 };

Тем не менее, вы можете только вернутьвыражениянезаявления, А такжеthrow это утверждение.

Решение Вопроса

Если вы не используете блок ({}) как совокупностьфункция стрелкитело должно бытьвыражение:

ArrowFunction:
    ArrowParameters[no LineTerminator here] => ConciseBody

ConciseBody:
    [lookahead ≠ { ] AssignmentExpression
    { FunctionBody }

Ноthrow этозаявление, а не выражение.

Теоретически

() => throw x;

эквивалентно

() => { return throw x; }

который не будет действительным либо.

Ты не можешьreturn throw это то, что вы пытаетесь сделать:

function(){
  return throw 42;
}

Ваш ответ на вопрос