UnaryExpression : ++ UnaryExpression
function evaluate(++ UnaryExpression) {
var expr = evaluate(UnaryExpression);
if (type(expr) == 'reference' && IsStrictExpression(expr) && Type(GetBase(expr)) == 'environmentRecord' && (GetReferencedName(expr) == 'eval' || GetReferencedName(expr) == 'arguments')) throw SyntaxError;
var oldValue = ToNumber(GetValue(expr));
var newValue = oldValue + 1; // using rules in 11.6.3
PutValue(expr, newValue);
return newValue;
}
Note: unlike the postfix expression, this immediately returns the new value of expr (but also replaces any previous value, regardless).
var x = {valueOf: function(){ return 5; }};
alert(x); // object
alert(++x); // 6
alert(x); // 6