提问者:小点点

ECMAScript AssignmentExpression产生规则如何产生`foo=42'?


如规范所述(是的,5.1,这是有意的):

AssignmentExpression :

    ConditionalExpression
    LeftHandSideExpression = AssignmentExpression
    LeftHandSideExpression AssignmentOperator AssignmentExpression

基于这个定义,我不明白一个简单的foo=42赋值是如何有效的。

我的理解是,foo=后面应该总是跟一个ConditionalExpression或者本质上是另一个赋值,但是在这种情况下,如果我不使用ConditionalExpression,生产将如何终止呢? 所有进一步的AssignmentExpression规则都需要一个ConditionalExpression或另一个AssignmentExpression

我错过了什么?


共1个答案

匿名用户

=运算符后的表达式必须始终是AssignmentExpression。 此AssignmentExpression通常不是由另一个赋值组成,而是由一个普通的ConditionalExpression组成,而ConditionalExpression又由一个更简单的表达式组成,该表达式可能包含运算符,也可能不包含运算符,从运算符优先级层次结构一直到数字123形成的文本。