提问人:szcsl 提问时间:7/18/2020 更新时间:7/18/2020 访问量:80
ECMAScript AssignmentExpression 生产规则如何生成 'foo = 42'?
How can ECMAScript AssignmentExpression production rule produce `foo = 42`?
问:
正如规范所述(是的,5.1,这是故意的):
AssignmentExpression :
ConditionalExpression
LeftHandSideExpression = AssignmentExpression
LeftHandSideExpression AssignmentOperator AssignmentExpression
基于这个定义,我不明白一个简单的分配是如何有效的。foo = 42
我的理解是,这应该始终跟在一个或本质上是另一个赋值之后,但在这种情况下,如果我不使用 ?所有进一步的规则都需要 a 或另一个 .foo =
ConditionalExpression
ConditionalExpression
AssignmentExpression
ConditionalExpression
AssignmentExpression
我在这里错过了什么?
答:
1赞
Bergi
7/18/2020
#1
运算符后面的表达式必须始终是 AssignmentExpression。此 AssignmentExpression 通常不是由另一个赋值组成,而是由一个普通的 ConditionalExpression 组成,而 ConditionalExpression 又由一个更简单的表达式组成,该表达式可能包含运算符,也可能不包含运算符,一直到运算符优先级层次结构,一直到数字形成的 Literal。=
123
评论
foo = 42
ConditionalExpression
42
ConditionalExpression
AssignmentExpression
BitwiseXORExpression