En JavaScript, vous pouvez utiliser l' ++opérateur avant ( pré-incrémentation ) ou après le nom de la variable ( post-incrémentation ). Quelles sont, le cas échéant, les différences entre ces façons d'incrémenter une variable?
En JavaScript, vous pouvez utiliser l' ++opérateur avant ( pré-incrémentation ) ou après le nom de la variable ( post-incrémentation ). Quelles sont, le cas échéant, les différences entre ces façons d'incrémenter une variable?
Réponses:
Idem que dans les autres langues:
++x (pré-incrémentation) signifie "incrémenter la variable; la valeur de l'expression est la valeur finale"x++ (post-incrémentation) signifie "mémoriser la valeur d'origine, puis incrémenter la variable; la valeur de l'expression est la valeur d'origine"Maintenant, lorsqu'ils sont utilisés comme une déclaration autonome, ils signifient la même chose:
x++;
++x;
La différence vient lorsque vous utilisez la valeur de l'expression ailleurs. Par exemple:
x = 0;
y = array[x++]; // This will get array[0]
x = 0;
y = array[++x]; // This will get array[1]
+ 1place de ++? Existe-t-il un moyen d'incrémenter avant ou après lors de l'ajout de nombres?
xcommence par 10, la valeur de r1est 21, soit 10 + 11. La valeur de la première x++expression est 10 et xest incrémentée à 11. La valeur de la deuxième x++expression est 11 et xest incrémentée à 12.
++x incrémente la valeur, puis l'évalue et la stocke.x++ évalue la valeur, puis l'incrémente et la stocke.var n = 0, m = 0;
alert(n++); /* Shows 0, then stores n = 1 */
alert(++m); /* Shows 1, then stores m = 1 */
Notez que l'utilisation ++xlorsque cela est possible présente de légers avantages en termes de performances , car vous lisez la variable, la modifiez, puis l'évaluez et la stockez. Par rapport à l' x++opérateur où vous lisez la valeur, l'évaluez, la modifiez, puis la stockez.
Si je comprends bien, si vous les utilisez de manière autonome, ils font la même chose. Si vous essayez d'en afficher le résultat sous forme d'expression, ils peuvent différer. Essayez alert (i ++) par rapport à alert (++ i) pour voir la différence. i ++ évalue i avant l'addition et ++ i fait l'addition avant d'évaluer.
Voir http://jsfiddle.net/xaDC4/ pour un exemple.
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
J'ai une explication de la compréhension de la post-incrémentation et de la pré-incrémentation. Alors je le mets ici.
Permet d'assigner 0àx
let x = 0;
Commençons par post-incrémentation
console.log(x++); // Outputs 0
Pourquoi?
Permet de décomposer l' x++expression
x = x;
x = x + 1;
La première instruction renvoie la valeur de xlaquelle est0
Et plus tard, lorsque vous utilisez une xvariable n'importe où, la deuxième instruction est exécutée
La deuxième instruction renvoie la valeur de cette x + 1expression qui est(0 + 1) = 1
Gardez à l'esprit la valeur de xcet état qui est1
Commençons maintenant par le pré-incrément
console.log(++x); // Outputs 2
Pourquoi?
Permet de décomposer l' ++xexpression
x = x + 1;
x = x;
La première instruction renvoie la valeur de cette x + 1expression qui est(1 + 1) = 2
La deuxième instruction renvoie la valeur xdont il est 2ainsi x = 2donc elle renvoie2
J'espère que cela vous aidera à comprendre ce que sont la post-incrémentation et la pré-incrémentation!