Operators ||= and &&=

David-Sarah Hopwood david-sarah at jacaranda.org
Wed May 6 17:23:18 PDT 2009

Ash Berlin wrote:
>> I don't think ||= and ??= are very difficult to define clearly.
>> Perhaps just a line each in terms of the expanded syntax. I don't
>> think they would add much bloat to engines. Perhaps just better to add
>> them both and move on to discussing classes, lambdas, or processes.
> a ||= b;
> a = a || b;

Note that in general, 'a op= b' is *not* equivalent to 'a = a op b',
the main issue being that 'a op= b' evaluates 'a' once, and 'a = a op b'
evaluates it twice.

It is difficult, perhaps impossible, to give a correct expansion of
the compound assignment operators in terms of the corresponding
non-assigning operator, because there isn't (AFAIK) any way
to preserve an evaluated LeftHandSideExpression, without applying
GetValue to it, while the right-hand-side is being evaluated. So
these operators have to be treated as primitive.

David-Sarah Hopwood ⚥

More information about the es-discuss mailing list