functionexample(a=b) {
// Ok, but it triggers setter.
a = a || b;
// No setter, but sometimes flagged as a lint error!
a || (a = b);
}

With this, we get terseness and we don't have to suffer from setter calls.

Semantics

The logical assignment operators function a bit differently than their mathematical assignment friends. While math assignment operators always trigger a set operation, logical assignment embraces their short-circuiting semantics to avoid it when possible.