谁能给我解释一下,为啥 "我 "的语法是 "我"?对于, 而, 忙里偷闲 语句的定义,头中的条件部分是一个 "表达" 谁能给我解释一下下面的事情是什么意思?
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 */
而且还可以写 函数表达式 在这些语句的标题中,即使是在 函数表达式 的右侧没有出现 非终端 Expression[In, Yield, Await] :
for (var i = 0; function () {}; i ++) ;
/* ^^^^^^^^^^^^^^ */
/* functionExpr */
while (function () {}) ;
/* ^^^^^^^^^^^^^^ */
/* functionExpr */
do ; while (function () {}) ;
/* ^^^^^^^^^^^^^^ */
/* functionExpr */
我花了一些时间在文档中搜索,但我发现的是(总结)。
Expression:
AssignmentExpression
然后,在其他方面。
AssignmentExpression:
LeftHandSideExpression
所以我们可以深入嵌套。
LeftHandSideExpression:
NewExpression
NewExpression:
MemberExpression
MemberExpression:
PrimaryExpression
并发现PrimaryExpression包含了许多其他的项目,但同时也是 字面意思 和 函数表达式:
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]
我希望我的回答足够清楚,并澄清你的疑惑。