ECMAScript 中的表达式语句实际上是什么

What expression statements in ECMAScript actually are

假设在某个解析过程中,我已经遍历了以下语法推导:

Script -> ScriptBody -> StatementList -> ExpressionStatement -> Expression

麻烦来了。根据规范,ExpressionStatement 中的 Expression 只能以 AssignmentExpression 或它们的序列结束。但是,像

这样的语句
a;
12;
"some text";

绝对是表达式语句(据我所知),同时不是 AssignmentExpression 的任何可能子类型。它们无法解决我浏览器中的语法错误。

这些语句 return 值是特定实现或引擎的功能,还是我在规范中遗漏了什么?也许,这些根本不是 AssignmentExpressions,我把它们误认为是别的东西了?

当您查看 AssignmentExpression 的定义时,您会发现它解析为 ,例如 AssignmentExpression -> ConditionalExpression -> LogicalORExpression -> LogicalANDExpression -> BitwiseORExpression -> BitwiseXORExpression -> BitwiseANDExpression -> EqualityExpression -> RelationalExpression -> ShiftExpression -> AdditiveExpression -> MultiplicativeExpression -> ExponentiationExpression -> UnaryExpression -> UpdateExpression -> LeftHandSideExpression -> NewExpression - > MemberExpression -> PrimaryExpression -> Literal -> StringLiteral.

所以 "some text" 是有效的 AssignmentExpression。其他文字和变量引用也是如此。