Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ECMAScript AssignmentExpression生成规则如何生成“foo=42”?_Javascript_Ecmascript 5_Specifications_Assignment Operator - Fatal编程技术网

Javascript ECMAScript AssignmentExpression生成规则如何生成“foo=42”?

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

正如(是的,5.1,这是有意的):

根据这个定义,我不明白一个简单的
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