如规范所述(是的,5.1,这是有意的):
AssignmentExpression :
ConditionalExpression
LeftHandSideExpression = AssignmentExpression
LeftHandSideExpression AssignmentOperator AssignmentExpression
基于这个定义,我不明白一个简单的foo=42
赋值是如何有效的。
我的理解是,foo=
后面应该总是跟一个ConditionalExpression
或者本质上是另一个赋值,但是在这种情况下,如果我不使用ConditionalExpression
,生产将如何终止呢? 所有进一步的AssignmentExpression
规则都需要一个ConditionalExpression
或另一个AssignmentExpression
。
我错过了什么?
=
运算符后的表达式必须始终是AssignmentExpression。 此AssignmentExpression通常不是由另一个赋值组成,而是由一个普通的ConditionalExpression组成,而ConditionalExpression又由一个更简单的表达式组成,该表达式可能包含运算符,也可能不包含运算符,从运算符优先级层次结构一直到数字123
形成的文本。