Expression :
AssignmentExpression
Expression , AssignmentExpression
ExpressionNoIn :
AssignmentExpressionNoIn
ExpressionNoIn , AssignmentExpressionNoIn
function evaluate(Expression , AssignmentExpression) {
var lref = evaluate(Expression);
GetValue(lref); // can have observable side effects, result is discarded
var rref = evaluate(AssignmentExpression);
return GetValue(rref);
}
The NoIn version behaves identical.
Note that GetValue is called on the left expression, even though the result is completely discarded. This is because there might be observable side effects to this.