2.1.7 [ECMA-ES2017] Section 220.127.116.11 Runtime Semantics: Evaluation
V0190: The reference is retrieved twice
The specification states:
18.104.22.168 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 subtracting the value 1 from 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.