Краткая стрелка функции тела грамматики - PullRequest
3 голосов
/ 03 февраля 2020

Насколько я понимаю, существует два вида тела функции стрелки: сжатый и подробный.

()=>1 // Concise
()=>{} // Not concise?

Краткий не содержит фигурных скобок и представляет собой AssignmentExpression, а подробный предположительно предположительно блок, но я не уверен.

14.2 из spe c определяет грамматику функций со стрелками, но, похоже, в скобках содержится определение краткого тела.

1.  ConciseBody[In]:
2.      [lookahead ≠ {]ExpressionBody[?In, ~Await]
3.      {FunctionBody[~Yield, ~Await]}

Куда я иду не так? Где "подробная" грамматика тела, определенная в spe c?

Ответы [ 2 ]

4 голосов
/ 03 февраля 2020

Похоже, что он указывает две опции в ConciseBody: либо ExpressionBody (без скобок) ИЛИ a FunctionBody, заключенный в скобки.

Формат написания spe c поясняется в разделе «Грамматическая нотация», https://tc39.es/ecma262/#sec -грамма-нотация

3 голосов
/ 03 февраля 2020

Согласно терминологии spe c, каждый ArrowFunction имеет ConsiseBody, а затем они различаются короткими ExpressionBody и обычными скобками FunctionBody.

обычно используемая терминология в мире JS (например, здесь, в MDN ), однако, часто различает guish между "кратким телом" и "блочным телом", что имеет для меня больше смысла лично.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...