2.1.20 [ECMA-262/6] Section 12.5.7.1 Runtime Semantics: Evaluation
V0049: The reference is retrieved twice
The specification states:
-
12.5.7.1 Runtime Semantics: Evaluation UnaryExpression : ++ UnaryExpression 1. Let expr be the result of evaluating UnaryExpression. 2. Let oldValue be ToNumber(GetValue(expr)). 3. ReturnIfAbrupt(oldValue). 4. Let newValue be the result of adding the value 1 to oldValue, using the same rules as for the + operator (see 12.7.5). 5. Let status be PutValue(expr, newValue). 6. ReturnIfAbrupt(status). 7. Return newValue.
IE11 Mode and EdgeHTML Mode (All versions)
Between steps 3 and 4, the following steps are added:
a. If Type(expr) is a Reference and if IsUnresolvableReference(_expr_) is false:
1. Assert: expr is a reference to an Environment Record.
2. Let hs be the result of evaluating an Identifier _id_ whose StringValue is GetReferencedName(expr) as if _id_ were a LeftHandSideExpression.
3. ReturnIfAbrupt(expr);
As a result, the reference is retrieved twice.