JavaScript函数是否调用LeftHandSideExpression,因此是一个ExpressionStatement?

Mat*_*ias 2 javascript bnf function-call ecmascript-7

我试图证明一个简单的函数调用,如

window.alert();
Run Code Online (Sandbox Code Playgroud)

是有效的EcmaScript 2016(第7版)语法.落后的工作,并期望这是一个ExpressionStatement,我看到它适合的模式MemberExpression参数是一个CallExpression.并且,第12.3节将LeftHandSideExpression定义为可能是CallExpression.现在,我的问题是12.15AssignmentExpression似乎要求 LeftHandSideExpression后跟AssignmentExpressionAssignmentOperator,AssignmentExpression不能;

我可能错过了一些简单的东西.方向将非常感谢.

Ber*_*rgi 6

一个AssignmentExpression不一定需要是一个任务,它只是指"转让可以站在这里".它也可以只包含ConditionalExpression.现在,我们需要走下来的关联规则的整个产业链:
一个条件表达式可以包含三元运算符或由单独的LogicalORExpression.一个LogicalORExpression可以包含一个||操作者或由单独的LogicalANDExpression.等:一个LogicalANDExpression可单独由一个的BitwiseORExpression它可以由单独一个的BitwiseXORExpression它可以由单独一个的BitwiseANDExpression它可以由单独一个的EqualityExpression它可以由单独一个的RelationalExpression它可以由单独一个的ShiftExpression它可以由只有一个AdditiveExpression,它只能由一个MultiplicativeExpression组成,它只能由一个ExponentiationExpression组成,它只能由一个UnaryExpression组成,它只能由一个UpdateExpression组成.

最后可以包含我们正在关注的LeftHandSideExpression.