++ i și i ++ Operatori de creștere și descreștere

Acești operatori de creștere și operatorii de decrementare corespunzători sunt poate un pic confuzi pentru oricine nu le-a mai întâlnit.

Pentru început, există mai multe moduri diferite de a adăuga sau a scădea una.

i = i + 1;
i + = 1;
i ++;
++i;

Pentru scăderea uneia, există aceleași patru opțiuni cu - înlocuite pentru fiecare +.

Deci de ce exact JavaScript (și alte limbi) oferă atât de multe moduri diferite de a face același lucru? Ei bine, pentru un lucru, unele dintre aceste alternative sunt mai scurte decât altele și implică mai puțin dactilografierea. Utilizarea + = permite cu ușurință să fie adăugate orice număr și nu doar unul la o variabilă fără a fi necesar să introduceți numele variabilei de două ori.

Asta încă nu explică de ce atât i ++ cât și ++ există, deoarece ambele pot fi folosite doar pentru a adăuga unul și ambele au aceeași lungime. Motivul pentru cele două alternative este că acestea nu sunt destinate într-adevăr să fie utilizate ca instrucțiuni de sine stătător, ci sunt proiectate cu adevărat pentru a putea fi încorporate în enunțuri mai complexe în care actualizați de fapt mai mult de o variabilă într-o singură afirmație. actualizați de fapt mai mult de o variabilă într-o singură afirmație.

Probabil cea mai simplă afirmație este următoarea:

j = i ++;

Această afirmație actualizează valorile ambelor variabile i și j din instrucțiunea unică. Lucrul este că, în timp ce ++ i și i ++ fac același lucru în ceea ce privește actualizarea i fac lucruri diferite în ceea ce privește actualizarea altor variabile. Afirmația de mai sus poate fi scrisă ca două afirmații separate ca aceasta:

j = i;
i + = 1;

Rețineți că combinarea lor înseamnă că avem opt caractere în loc de 13. Desigur, versiunea mai lungă este mult mai clară în cazul în care este vorba de a stabili ce valoare va avea j.

Acum, dacă ne uităm la alternativa:

j = ++ i;

Această afirmație este echivalentul următoarelor:

i + = 1;
j = i;

Desigur, aceasta înseamnă că j are acum o valoare diferită de cea pe care o avea în primul exemplu. Poziția ++, înainte sau după numele variabilei, controlează dacă variabila este incrementată înainte sau după ce se folosește în declarația că este folosită în.

Exact același lucru se aplică atunci când luați în considerare diferența dintre --i și i-- în cazul în care poziția lui - determină dacă unul este scăzut înainte sau după ce valoarea este folosită.

Așadar, atunci când o utilizați separat ca o singură afirmație, nu are nicio diferență dacă o plasați înainte sau după numele variabilei (cu excepția unei diferențe de viteză microscopică pe care nimeni nu o va observa vreodată). Doar o dată când o combinați cu o altă afirmație, face diferența cu valoarea care este atribuită unei alte variabile sau variabile.