Ces opérateurs d'incrémentation et les opérateurs de décrémentation correspondants sont peut-être un peu déroutants pour quiconque ne les a jamais rencontrés auparavant.
Pour commencer, il existe plusieurs façons d'ajouter ou de soustraire un.
i = i + 1;
i + = 1;
i ++;
++je;
Pour soustraire un, il y a les quatre mêmes choix avec - substitué pour chaque +.
Alors pourquoi exactement JavaScript (et d'autres langages) offrent-ils autant de façons différentes de faire la même chose? Eh bien, pour une chose, certaines de ces alternatives sont plus courtes que d'autres et impliquent donc moins de frappe. L'utilisation de + = permet facilement d'ajouter n'importe quel nombre et pas un seul à une variable sans avoir à saisir deux fois le nom de la variable.
Cela n'explique toujours pas pourquoi i ++ et ++ i existent car les deux ne peuvent être utilisés que pour en ajouter un et les deux ont la même longueur. La raison des deux alternatives est que celles-ci ne sont pas vraiment destinées à être utilisées en tant qu'instructions autonomes mais sont vraiment conçues pour pouvoir être incorporées dans des instructions plus complexes où vous mettez à jour plus d'une variable dans la même instruction. mettre à jour en fait plus d'une variable dans la même instruction.
La déclaration la plus simple est probablement la suivante:
j = i ++;
Cette instruction met à jour les valeurs des deux variables i et j dans la même instruction. Le fait est que tandis que ++ i et i ++ font la même chose en ce qui concerne la mise à jour de i, ils font des choses différentes en ce qui concerne la mise à jour d'autres variables. La déclaration ci-dessus peut être écrite en deux déclarations distinctes comme celle-ci:
j = i;
i + = 1;
Notez que les combiner ensemble signifie que nous avons huit caractères au lieu de 13. Bien sûr, la version longue est beaucoup plus claire lorsqu'il s'agit de déterminer la valeur que j aura..
Maintenant, si nous regardons l'alternative:
j = ++ i;
Cette déclaration est l'équivalent de ce qui suit:
i + = 1;
j = i;
Cela signifie, bien sûr, que j a maintenant une valeur différente de celle qu'il avait dans le premier exemple. La position du ++ avant ou après le nom de la variable contrôle si la variable est incrémentée avant ou après son utilisation dans l'instruction dans laquelle elle est utilisée..
Exactement la même chose s'applique lorsque vous considérez la différence entre --i et i-- où la position du - détermine si l'on est soustrait avant ou après l'utilisation de la valeur.
Ainsi, lorsque vous l'utilisez séparément en tant qu'instruction unique, cela ne fait aucune différence que vous le placiez avant ou après le nom de la variable (à l'exception d'une différence de vitesse microscopique que personne ne remarquera jamais). Ce n'est qu'une fois que vous le combinez avec une autre instruction qu'il fait une différence dans la valeur qui est affectée à une autre variable ou variables.