может кто-нибудь объяснить мне, почему грамматика оператора for, while, do-while определяет, что часть условия в заголовке является "выражением"
Может ли кто-нибудь объяснить мне, почему грамматика оператора for, while, do-while определяет, что часть условия в заголовке является "выражением", и может ли кто-нибудь объяснить мне, что означает следующая вещь
Expression[In, Yield, Await] :
AssignmentExpression[?In, ?Yield, ?Await]
Expression[?In, ?Yield, ?Await] , AssignmentExpression[?In, ?Yield, ?Await]
Как видите, литерала справа после нетерминального Expression[In, Yield, Await] :
но все же можно писать литералы в заголовкеfor-statement, while-statement, do-while statement
for (var i = 0; null; i ++) {
/* ^^^^ */
/* null */
}
while (null) {
/* ^^^^ */
/* null */
}
do {} while (null) ;
/* ^^^^ */
/* null */
И также можно записывать выражения функций в заголовке этих операторов, даже если FunctionExpression не присутствует в правой части нетерминального Expression[In, Yield, Await] :
for (var i = 0; function () {}; i ++) ;
/* ^^^^^^^^^^^^^^ */
/* functionExpr */
while (function () {}) ;
/* ^^^^^^^^^^^^^^ */
/* functionExpr */
do ; while (function () {}) ;
/* ^^^^^^^^^^^^^^ */
/* functionExpr */
1 ответ
Я поискал в документации, но то, что я нашел (вкратце):
Expression:
AssignmentExpression
Затем, среди прочего:
AssignmentExpression:
LeftHandSideExpression
Итак, мы можем углубиться во вложение:
LeftHandSideExpression:
NewExpression
NewExpression:
MemberExpression
MemberExpression:
PrimaryExpression
И узнайте, что PrimaryExpression содержит много других элементов, кроме Literal и FunctionExpression:
PrimaryExpression[Yield, Await]:
this
IdentifierReference[?Yield, ?Await]
Literal
ArrayLiteral[?Yield, ?Await]
ObjectLiteral[?Yield, ?Await]
FunctionExpression
ClassExpression[?Yield, ?Await]
GeneratorExpression
AsyncFunctionExpression
AsyncGeneratorExpression
RegularExpressionLiteral
TemplateLiteral[?Yield, ?Await, ~Tagged]
CoverParenthesizedExpressionAndArrowParameterList[?Yield, ?Await]
Надеюсь, мой ответ достаточно ясен и проясняет ваши сомнения