为什么指定赋值运算符一个独立的生产与'='文字的一部分,而不是`AssignmentOperator`符号
问题描述:
ECMAScript的语法为AssignmentExpression指定以下内容:为什么指定赋值运算符一个独立的生产与'='文字的一部分,而不是`AssignmentOperator`符号
AssignmentExpression :
ConditionalExpression
YieldExpression
ArrowFunction
AsyncArrowFunction
LeftHandSideExpression = AssignmentExpression <-------------- here
LeftHandSideExpression AssignmentOperator AssignmentExpression
AssignmentOperator : one of
*= /= %= += -= <<= >>= >>>= &= ^= |= **=
我想知道什么是落后指定LeftHandSideExpression = AssignmentExpression
的理由作为单独生产而不是简单地将=
分成AssignmentOperator
?
答
如果两个作品合并,语法将完全等效。
但是,在规格后面有几个地方对两种产品进行了不同的处理。例如,在语法之后的静态语义部分中,然后在解构分配部分中进行,后者仅适用于=
生产。
如果两个生产是一个,指他们短语必须是比较尴尬的,如“LeftHandSideExpression AssignmentOperator AssignmentExpression
当AssignmentOperator
是=
”。
所以推测这两个作品是分开写下来的,所以在文中单独讨论它们会更容易,也更容易混淆。