In JavaScript è possibile utilizzare l' ++operatore prima ( pre-incremento ) o dopo il nome della variabile ( post-incremento ). Quali eventuali differenze ci sono tra questi modi di incrementare una variabile?
In JavaScript è possibile utilizzare l' ++operatore prima ( pre-incremento ) o dopo il nome della variabile ( post-incremento ). Quali eventuali differenze ci sono tra questi modi di incrementare una variabile?
Risposte:
Come in altre lingue:
++x (pre-incremento) significa "incrementa la variabile; il valore dell'espressione è il valore finale"x++ (post-incremento) significa "ricorda il valore originale, quindi incrementa la variabile; il valore dell'espressione è il valore originale"Ora, se usati come dichiarazioni autonome, significano la stessa cosa:
x++;
++x;
La differenza viene quando si utilizza il valore dell'espressione altrove. Per esempio:
x = 0;
y = array[x++]; // This will get array[0]
x = 0;
y = array[++x]; // This will get array[1]
+ 1invece di ++? C'è un modo per aumentare prima o dopo l'aggiunta di numeri?
xinizia come 10, il valore di r1è 21, ovvero 10 + 11. Il valore della prima x++espressione è 10 ed xè incrementato a 11. Il valore della seconda x++espressione è 11 ed xè incrementato a 12.
++x incrementa il valore, quindi lo valuta e lo memorizza.x++ valuta il valore, quindi lo incrementa e lo memorizza.var n = 0, m = 0;
alert(n++); /* Shows 0, then stores n = 1 */
alert(++m); /* Shows 1, then stores m = 1 */
Si noti che ci sono lievi vantaggi in termini di prestazioni ++xquando possibile, poiché si legge la variabile, la si modifica, quindi si valuta e si memorizza. Contro l' x++operatore in cui leggi il valore, lo valuti, lo modifichi, quindi lo memorizzi.
Se li capisco, se li usi da soli, fanno la stessa cosa. Se si tenta di generare il risultato come espressione, potrebbero differire. Prova avviso (i ++) rispetto all'avviso (++ i) per vedere la differenza. i ++ valuta i prima dell'aggiunta e ++ i fa l'aggiunta prima della valutazione.
Vedi http://jsfiddle.net/xaDC4/ per un esempio.
var a = 1;
var b = ++a;
alert('a:' + a + ';b:' + b); //a:2;b:2
var c = 1;
var d = c++;
alert('c:' + c + ';d:' + d); //c:2;d:1
var x = 0, y = 0;
//post-increment: i++ returns value then adds one to it
console.log('x++ will log: ', x++); //0
console.log('x after x++ : ', x); //1
//pre-increment: adds one to the value, then returns it
console.log('++y will log: ', ++y); //1
console.log('y after ++y : ', y); //1
Ho una spiegazione della comprensione post-incremento e pre-incremento. Quindi lo sto mettendo qui.
Consente di assegnare 0ax
let x = 0;
Iniziamo con il post-incremento
console.log(x++); // Outputs 0
Perché?
Consente di suddividere l' x++espressione
x = x;
x = x + 1;
La prima istruzione restituisce il valore di xcui è0
E più tardi, quando usi la xvariabile ovunque, viene eseguita la seconda istruzione
La seconda istruzione restituisce il valore di questa x + 1espressione che è(0 + 1) = 1
Tieni presente il valore di xquesto stato che è1
Ora cominciamo con il pre-incremento
console.log(++x); // Outputs 2
Perché?
Consente di suddividere l' ++xespressione
x = x + 1;
x = x;
La prima istruzione restituisce il valore di questa x + 1espressione che è(1 + 1) = 2
In secondo luogo istruzione restituisce il valore xche è 2così x = 2quindi restituisce2
Spero che questo possa aiutarti a capire cosa sono post-incremento e pre-incremento!