126 votes

javascript i++ vs ++i

En javascript, j'ai vu i++ utilisé dans de nombreux cas, et je comprends qu'il ajoute un à la valeur précédente :

for (var i=1; i<=10; i++) {
  console.log(i);
}

Mais que se passe-t-il quand je fais ça :

++i;

Et est-ce que c'est différent en utilisant le -- (à part bien sûr le fait qu'il s'agit d'une soustraction plutôt que d'une addition) ?

2 votes

Il pourrait vous être utile de savoir que ++i est souvent appelé notation PREFIX et i++ notation POSTFIX. Cela fonctionne de la même manière dans de nombreuses autres langues.

229voto

Guffa Points 308133

La différence entre i++ y ++i est la valeur de l'expression.

La valeur i++ est la valeur de i avant l'incrément. La valeur de ++i est la valeur de i après l'incrément.

Exemple :

var i = 42;
alert(i++); // shows 42
alert(i); // shows 43
i = 42;
alert(++i); // shows 43
alert(i); // shows 43

El i-- y --i Les opérateurs fonctionnent de la même manière.

11 votes

La plupart du temps, ++i est légèrement plus rapide. cela peut dépendre du système, mais en théorie, cela devrait être le cas. jsperf.com/plusplusi-vs-iplusplus

9 votes

@aelgoa : La plupart du temps, la différence est dans la marge d'erreur, et le reste du temps, il n'y a pas de résultat cohérent. Si vous n'utilisez pas la valeur de l'expression, théoriquement il ne devrait pas y avoir de différence du tout, car le compilateur devrait l'optimiser pour la même opération.

1 votes

@aelgoa +1, comme cela a une couverture presque complète dans d'autres langues, ++i est toujours une meilleure pratique à moins qu'une langue particulière ait explicitement des performances plus mauvaises. J'ai entendu des gens dire que c'était négligeable, mais pas toujours. Par exemple, avec le javascript côté serveur, qui ne se contente pas de générer une page, il se peut que vous boucliez rapidement sur un texte unique des millions de fois. Cela peut réduire votre surcharge par boucle de ~1/2, ce qui peut être très important pour les boucles d'une ligne.

61voto

Delan Azabani Points 33013

++variable incrémente la variable, en retournant la nouvelle valeur.

variable++ incrémente la variable, mais renvoie l'ancienne valeur.

--variable décrémente la variable, en retournant la nouvelle valeur.

variable-- décrémente la variable, mais renvoie l'ancienne valeur.

Par exemple :

a = 5;
b = 5;
c = ++a;
d = b++;

a est de 6, b est de 6, c est de 6 et d est de 5.

Si vous n'utilisez pas le résultat, les opérateurs préfixes fonctionnent de la même manière que les opérateurs postfixes.

0 votes

Si vous utilisez le résultat comme un index de tableau, vous pouvez également le décaler de 1 initialement, pour préfixer =].

9voto

kaush Points 71

i++ = Utiliser la valeur de i dans la déclaration puis l'augmenter de 1
++i = Augmenter la valeur de i de 1 puis utiliser dans la déclaration.

7voto

jfriend00 Points 152127

Il détermine si l'incrémentation a lieu avant ou après l'utilisation de la valeur de la variable.

var j = 2;
console.log(j++);   // 2
console.log(j);     // 3

var k = 2;
console.log(++k);   // 3
console.log(k);     // 3

6voto

Joe Points 34413
var i = 0;
console.log(i++); // 0
console.log(++i); // 2

2 votes

Il serait préférable d'utiliser ici deux variables pour illustrer la différence. Les exemples ne doivent pas faire plus d'une chose.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X