2.1.7 [ECMA-262/9:2018] Section 18.104.22.168 Runtime Semantics: Evaluation
V0189: The reference is retrieved twice
The specification states:
22.214.171.124 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.
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.
As a result, the reference is retrieved twice.