Comprensione dell’incremento

Ad esempio questo:

var a = 123; var b = a++; 

ora a contiene 124 e b contiene 123

Capisco che b sta prendendo il valore di a e quindi a viene incrementato. Tuttavia, non capisco perché sia ​​così. La ragione principale del perché i creatori di JavaScript vorrebbero questo. Qual è il vantaggio di questo oltre a confondere i principianti?

Ecco perché è chiamato “operatore post-incremento”. Essenzialmente, tutto è un’espressione che si traduce in un valore. a + 1 è un’espressione che risulta nel valore 124. Se si assegna a b con b = a + 1 , b ha il valore di 124. Se non si assegna il risultato a qualcosa, a + 1 risulterà comunque in il valore 124, verrà immediatamente gettato via dal momento che non lo si “cattura” da nessuna parte.

A proposito, anche b = a + 1 è un’espressione che restituisce 124. Il valore risultante di un’espressione di assegnazione è il valore assegnato. Ecco perché c = b = a + 1 funziona come ti aspetteresti.

Ad ogni modo, la particolarità di un’espressione con ++ e -- è che oltre a restituire un valore, l’operatore ++ modifica direttamente la variabile. Quindi, cosa succede quando si fa b = a++ , l’espressione a++ restituisce il valore 123 e incrementa a . Il post incrementor restituisce prima il valore, quindi incrementa, mentre il pre incrementor ++a primo incrementa, quindi restituisce il valore. Se hai appena scritto a++ da solo senza incarico, non noterai la differenza. È così che di solito si usa a++ , come abbreviazione di a = a + 1 .

Questo è abbastanza standard.

Nota che puoi anche scrivere

 b = ++a; 

Quale ha l’effetto che probabilmente stai aspettando.

È importante rendersi conto che ci sono due cose che succedono qui: l’incarico e l’incremento e il linguaggio dovrebbero definire in quale ordine accadrà. Dato che abbiamo a disposizione sia ++a che a++ ha senso che dovrebbero avere significati diversi.

Per quelli di noi provenienti da uno sfondo C, questo è abbastanza naturale. Se PHP si comporta diversamente, potremmo chiederci perché PHP abbia scelto di deviare da ciò a cui siamo abituati.

++ può essere usato come operatore post-incremento come nell’esempio, oppure può essere usato come operatore pre-incremento se usato prima della variabile.

 var b = ++a; 

Quindi prima la variabile a verrà incrementata, quindi il valore incrementato verrà assegnato a b .

Questo è il modo standard per farlo. L’operatore postincremento assegna il valore e quindi incrementa.

L’operatore di preincremento ( ++a ) incrementa e quindi assegna.

Non ho familiarità con PHP e non posso dire come lo fa o perché.

Quando inserisci il ++ dopo la variabile, viene incrementato dopo l’assegnazione. Puoi anche mettere il ++ prima della variabile e questo viene incrementato prima dell’assegnazione.

Javascript in realtà si comporta esattamente allo stesso modo di PHP per l’incremento di prefissi e postfissi.

++ prima che il pre-incremento di una chiamata alla variabile significhi incrementare il valore della variabile prima di eseguire la dichiarazione.
++ dopo la variabile chiamata post-incremento significa incrementare il valore della variabile dopo aver eseguito l’istruzione.

entrambi aumentano il valore della variabile.

$b=$a++; è equivalente a

 $b=$a;//after $a=$a+1; 

$ b = ++ $ a; `è equivalente a

 $a=$a+1;//before $b=$a; 

Un altro esempio

 $a=5; echo $a++;//prints 5; $a=5; echo ++$a;//prints 6; 

Post-incremento e pre-incremento sono operatori comuni in molte lingue, Javascript è di circa 30 anni dopo essere il primo. PHP supporta anche il post-incremento.