De acordo com ECMA-262, parte 11,13, seguinte é uma lista exaustiva dos operadores de atribuição compostos: *= /= %= += -= <<= >>= >>>= &= ^= |=
.
De acordo com a parte 11.11, var c = a || b
colocará a
valor em c
se ToBoolean(a)
for verdadeiro e colocará b
valor em c
caso contrário. Como tal, o OR lógico é frequentemente usado como operador de coalescência, por exemplo
function (options) {
options = options || {};
}
Com freqüência suficiente, coalesce é usado para especificar o valor padrão para a variável, como foi mostrado acima: a = a || b
.
Parece que o operador de atribuição composto ||=
seria realmente útil, permitindo a escrever o código acima de uma forma mais curta e mais limpo: a ||= b
. No entanto, não é ali (embora *=
, +=
e outros operadores de atribuição composto são).
A questão é, por quê?
+=
, *=
, -=
, /=
, por que não faria %=
o trabalho?).
angle %= 360
ou vertexIndex %= numberOfVertices
(para a lista de vértices de um polígono fechado).
||=
e &&=
em breve: "Você pode ficar feliz em saber que, para o JS2 / ES4, || = e && = também estão sendo adicionados. || = é mais útil dos dois, mas não há motivo para deixar de fora o formulário de atribuição de opções && ". .