Espressioni di Assegnamento in JavaScript
- Le espressioni di assegnamento in JavaScript sono utilizzate per assegnare valori a variabili e proprietà.
- L'operatore di assegnamento
=
assegna il valore dell'operando di destra all'operando di sinistra. - Gli operatori di assegnamento combinati forniscono scorciatoie per eseguire un'operazione e assegnare il risultato in un'unica espressione.
Espressioni di Assegnamento
JavaScript usa l'operatore =
per assegnare un valore a una variabile o proprietà. Ad esempio:
i = 0; // Imposta la variabile i a 0.
o.x = 1; // Imposta la proprietà x dell'oggetto o a 1.
L'operatore =
si aspetta che il suo operando di sinistra sia un lvalue: una variabile o proprietà di un oggetto (o elemento di array). Si aspetta che il suo operando di destra sia un valore arbitrario di qualsiasi tipo. Il valore di un'espressione di assegnazione è il valore dell'operando di destra. Come effetto collaterale, l'operatore =
assegna il valore a destra alla variabile o proprietà a sinistra in modo che futuri riferimenti alla variabile o proprietà valutino quel valore.
Anche se le espressioni di assegnazione sono solitamente abbastanza semplici, a volte potremmo vedere il valore di un'espressione di assegnazione usato come parte di un'espressione più grande. Ad esempio, possiamo assegnare e testare un valore nella stessa espressione con codice come questo:
(a = b) === 0
Se facciamo questo, assicuriamoci di essere chiari sulla differenza tra gli operatori =
e ===
! Notiamo che =
ha precedenza molto bassa, e le parentesi sono solitamente necessarie quando il valore di un'assegnazione deve essere usato in un'espressione più grande.
L'operatore di assegnazione ha associatività da destra a sinistra, il che significa che quando più operatori di assegnazione appaiono in un'espressione, vengono valutati da destra a sinistra. Quindi, possiamo scrivere codice come questo per assegnare un singolo valore a più variabili:
i = j = k = 0; // Inizializza 3 variabili a 0
Assegnamenti Combinati
Oltre al normale operatore di assegnazione =
, JavaScript supporta un numero di altri operatori di assegnazione che forniscono scorciatoie combinando l'assegnazione con qualche altra operazione. Ad esempio, l'operatore +=
esegue addizione e assegnazione. La seguente espressione:
totale += tassaVendita;
è equivalente a questa:
totale = totale + tassaVendita;
Come ci si potrebbe aspettare, l'operatore +=
funziona per numeri o stringhe. Per operandi numerici, esegue addizione e assegnazione; per operandi stringa, esegue concatenazione e assegnazione.
Operatori simili includono -=
, *=
, &=
, e così via. La tabella che segue li elenca tutti:
Operatore | Esempio | Equivalente |
---|---|---|
+= |
a += b |
a = a + b |
-= |
a -= b |
a = a - b |
*= |
a *= b |
a = a * b |
/= |
a /= b |
a = a / b |
%= |
a %= b |
a = a % b |
**= |
a **= b |
a = a ** b |
<<= |
a <<= b |
a = a << b |
>>= |
a >>= b |
a = a >> b |
>>>= |
a >>>= b |
a = a >>> b |
&= |
a &= b |
a = a & b |
|= |
a |= b |
a = a | b |
^= |
a ^= b |
a = a ^ b |
Nella maggior parte dei casi, l'espressione:
a op= b
dove op
è un operatore, è equivalente all'espressione:
a = a op b
Nella prima riga, l'espressione a
è valutata una volta. Nella seconda, è valutata due volte. I due casi differiranno solo se a
include effetti collaterali come una chiamata di funzione o un operatore di incremento. Le seguenti due assegnazioni, ad esempio, non sono le stesse:
dati[i++] *= 2;
dati[i++] = dati[i++] * 2;