4

ECMAScript的語法爲AssignmentExpression指定以下內容:爲什麼指定賦值運算符一個獨立的生產與'='文字的一部分,而不是`AssignmentOperator`符號

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

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

我想知道什麼是落後指定LeftHandSideExpression = AssignmentExpression的理由作爲單獨生產而不是簡單地將=分成AssignmentOperator

回答

4

如果兩個作品合併,語法將完全等效。

但是,在規格後面有幾個地方對兩種產品進行了不同的處理。例如,在語法之後的靜態語義部分中,然後在解構分配部分中進行,後者僅適用於=生產。

如果兩個生產是一個,指他們短語必須是比較尷尬的,如「LeftHandSideExpression AssignmentOperator AssignmentExpressionAssignmentOperator=」。

所以推測這兩個作品是分開寫下來的,所以在文中單獨討論它們會更容易,也更容易混淆。

相關問題