为什么指定赋值运算符一个独立的生产与'='文字的一部分,而不是`AssignmentOperator`符号

问题描述:

ECMAScript的语法为AssignmentExpression指定以下内容:为什么指定赋值运算符一个独立的生产与'='文字的一部分,而不是`AssignmentOperator`符号

AssignmentExpression : 
    ConditionalExpression 
    YieldExpression 
    ArrowFunction 
    AsyncArrowFunction 
    LeftHandSideExpression = AssignmentExpression      <-------------- here 
    LeftHandSideExpression AssignmentOperator AssignmentExpression 

AssignmentOperator : one of 
    *= /= %= += -= <<= >>= >>>= &= ^= |= **= 

我想知道什么是落后指定LeftHandSideExpression = AssignmentExpression的理由作为单独生产而不是简单地将=分成AssignmentOperator

如果两个作品合并,语法将完全等效。

但是,在规格后面有几个地方对两种产品进行了不同的处理。例如,在语法之后的静态语义部分中,然后在解构分配部分中进行,后者仅适用于=生产。

如果两个生产是一个,指他们短语必须是比较尴尬的,如“LeftHandSideExpression AssignmentOperator AssignmentExpressionAssignmentOperator=”。

所以推测这两个作品是分开写下来的,所以在文中单独讨论它们会更容易,也更容易混淆。