Questi operatori di incremento e i corrispondenti operatori di decremento sono forse un po 'confusi per chiunque non li abbia mai incontrati prima.
Per cominciare, ci sono diversi modi per aggiungere o sottrarre uno.
i = i + 1;
i + = 1;
i ++;
++io;
Per sottrarre uno ci sono le stesse quattro scelte con - sostituite per ciascuna +.
Quindi perché esattamente JavaScript (e altre lingue) offre così tanti modi diversi di fare la stessa cosa? Bene, per prima cosa, alcune di queste alternative sono più brevi di altre e quindi comportano meno digitazioni. L'uso di + = consente facilmente di aggiungere qualsiasi numero e non solo uno a una variabile senza dover inserire due volte il nome della variabile.
Ciò non spiega ancora perché esistano sia i ++ che ++ poiché entrambi possono essere utilizzati solo per aggiungerne uno ed entrambi hanno la stessa lunghezza. Il motivo delle due alternative è che queste non sono realmente intese per essere utilizzate come istruzioni autonome ma sono progettate in modo tale da poter essere incorporate in istruzioni più complesse in cui si aggiorna effettivamente più di una variabile in una istruzione. aggiorna effettivamente più di una variabile nell'unica istruzione.
Probabilmente la dichiarazione più semplice è la seguente:
j = i ++;
Questa affermazione aggiorna i valori di entrambe le variabili iej nell'unica istruzione. Il fatto è che mentre ++ ie i ++ fanno la stessa cosa per quanto riguarda l'aggiornamento, fanno cose diverse per quanto riguarda l'aggiornamento di altre variabili. L'istruzione precedente può essere scritta come due istruzioni separate come questa:
j = i;
i + = 1;
Nota che combinarli insieme significa che abbiamo otto caratteri invece di 13. Naturalmente, la versione più lunga è molto più chiara dove si tratta di capire quale valore j avrà.
Ora se guardiamo l'alternativa:
j = ++ i;
Questa affermazione è l'equivalente di quanto segue:
i + = 1;
j = i;
Questo, ovviamente, significa che j ora ha un valore diverso da quello che aveva nel primo esempio. La posizione di ++ prima o dopo il nome della variabile controlla se la variabile viene incrementata prima o dopo che viene utilizzata nell'istruzione in cui viene utilizzata.
Lo stesso vale quando si considera la differenza tra --i e i-- dove la posizione di - determina se si viene sottratti prima o dopo l'uso del valore.
Quindi quando lo usi separatamente come una singola istruzione non fa alcuna differenza se lo metti prima o dopo il nome della variabile (tranne per una microscopica differenza di velocità che nessuno noterà mai). È solo una volta che lo si combina con un'altra istruzione che fa la differenza per il valore che viene assegnato a qualche altra variabile o variabili.