Javascript ECMAScript AssignmentExpression生成规则如何生成“foo=42”?
正如(是的,5.1,这是有意的): 根据这个定义,我不明白一个简单的Javascript ECMAScript AssignmentExpression生成规则如何生成“foo=42”?,javascript,ecmascript-5,specifications,assignment-operator,Javascript,Ecmascript 5,Specifications,Assignment Operator,正如(是的,5.1,这是有意的): 根据这个定义,我不明白一个简单的foo=42赋值是如何有效的 我的理解是,foo=后面应该始终跟一个条件表达式或者本质上是另一个赋值,但是在这种情况下,如果我不使用条件表达式,生产将如何终止?所有进一步的AssignmentExpression规则需要一个ConditionalExpression或另一个AssignmentExpression 这里缺少什么?运算符后面的表达式必须始终是AssignmentExpression。此AssignmentExpre
foo=42
赋值是如何有效的
我的理解是,foo=
后面应该始终跟一个条件表达式
或者本质上是另一个赋值,但是在这种情况下,如果我不使用条件表达式
,生产将如何终止?所有进一步的AssignmentExpression
规则需要一个ConditionalExpression
或另一个AssignmentExpression
这里缺少什么?运算符后面的表达式必须始终是AssignmentExpression。此AssignmentExpression通常不包含另一个赋值,而是一个普通的ConditionalExpression,它又由一个更简单的表达式组成,该表达式可能包含运算符,也可能不包含运算符,通过运算符优先级层次结构到数字
123
形成的文本。说明了如何准确处理foo=42
。是的,您应该使用ConditionalExpression
规则。文字42
是有效的条件表达式
(因为它是有效的AssignmentExpression
),请尝试跟踪它@Bergi谢谢你的提示,你是对的。显然,我确实试过追踪它,但在位xorexpression
处停了下来,认为我一定是走错了方向D如果你发了一封电子邮件,我很乐意接受@ibrahimmahrir谢谢你的提示。不幸的是,这一节并没有解释生产是如何终止的,只解释了如何计算这样一个表达式。Bergi在你的评论之后给出了正确的提示。
AssignmentExpression :
ConditionalExpression
LeftHandSideExpression = AssignmentExpression
LeftHandSideExpression AssignmentOperator AssignmentExpression