2.1.7 [ECMA-262/9:2018] Section 12.4.4.1 Runtime Semantics: Evaluation

V0189: The reference is retrieved twice

The specification states:

 12.4.4.1 Runtime Semantics: Evaluation
  
     UpdateExpression : LeftHandSideExpression ++
  
         1.  Let lhs be the result of evaluating LeftHandSideExpression.
         2.  Let oldValue be ? ToNumber(? GetValue(lhs)).
         3.  Let newValue be the result of adding the value 1 to oldValue, using the same 
             rules as for the + operator (see 12.8.5).
         4.  Perform ? PutValue(lhs, newValue).
         5.  Return oldValue.

EdgeHTML Mode

Between steps 2 and 3, the following steps are added:

    a. If Type(lhs) is a Reference and if IsUnresolvableReference(_lhs_) is false and IsPropertyReference(_lhs_) is false:

       1.  Assert: lhs is a reference to an Environment Record.

       2.  Let hs be the result of evaluating an Identifier _id_ whose StringValue is GetReferencedName(lhs) as if _id_ were a LeftHandSideExpression.

       3.  ReturnIfAbrupt(lhs);

As a result, the reference is retrieved twice.