Comprendre L'Incrémentation

par exemple:

var a = 123;
var b = a++;

maintenant a contient 124 et b contient 123

je comprends que b prend la valeur de a et a est incrémenté. Cependant, je ne comprends pas pourquoi il en est ainsi. La raison principale pourquoi les créateurs de JavaScript souhaitez. Quel est l'avantage de cette autre que la confusion des débutants?

5
demandé sur Webeng 2009-12-28 10:27:47

7 réponses

C'est pour ça qu'on l'appelle"l'opérateur post-incrémentant". Essentiellement, tout est une expression qui aboutit à une valeur. a + 1 est une expression qui donne la valeur 124. Si vous assignez cela à b avec b = a + 1 , b a la valeur de 124. Si vous n'assignez pas le résultat à quoi que ce soit, a + 1 résultera toujours à la valeur 124, Il sera juste jeté immédiatement puisque vous n'êtes pas "attraper" il n'importe où.

BTW, même b = a + 1 est une expression qui renvoie 124. La valeur résultante d'une expression de tâche est la Valeur assignée. C'est pour ça que c = b = a + 1 fonctionne comme prévu.

quoi qu'il en soit, la particularité d'une expression avec ++ et -- est qu'en plus de retourner une valeur, l'opérateur ++ modifie directement la variable. Donc, ce qui se passe quand vous faites b = a++ est, l'expression a++ renvoie la valeur 123 et augmente a . Le post incrementor retourne d'abord la valeur, puis incréments, tandis que le pre "incrementor ++a premier increments, then returns the value. Si vous avez simplement écrit a++ par lui-même sans assignation, vous ne remarquez la différence. C'est ainsi que a++ est habituellement utilisé, comme main courte pour a = a + 1 .

c'est assez standard.

8
répondu deceze 2009-12-28 09:45:32

Notez que vous pouvez aussi écrire

b = ++a;

qui a l'effet que vous attendez probablement.

il est important de se rendre compte qu'il y a deux choses qui se passent ici: l'affectation et l'incrément et le langage devrait définir dans quel ordre elles se produiront. Comme nous avons disponible à la fois ++a et a++ il est logique qu'ils devraient avoir des significations différentes.

pour ceux D'entre nous d'un C arrière-plan, c'est tout à fait naturel. Si PHP se comporte différemment, nous pourrions nous demander pourquoi PHP a choisi de s'écarter de ce à quoi nous sommes habitués.

5
répondu djna 2013-08-09 21:04:32

++ peut être utilisé comme opérateur de post-incrément comme dans votre exemple, ou il pourrait être utilisé comme opérateur de pré-incrément si utilisé avant variable.

var b = ++a;

puis la variable a sera incrémentée, puis la valeur incrémentée sera attribuée à b .

3
répondu Murat Can ALPAY 2013-08-09 21:14:21

C'est la manière standard de le faire. L'opérateur post-incrément attribue la valeur puis les incréments.

le pré-incrément ( ++a ) opérateur incréments et puis assigne.

Je ne suis pas familier avec php et ne peux pas dire comment il le fait ou pourquoi.

1
répondu mopoke 2009-12-28 07:33:26

quand vous mettez le ++ après la variable, il est incrémenté après l'affectation. Vous pouvez également mettre le ++ avant la variable et il obtient incrémenté avant l'affectation.

Javascript se comporte en fait exactement de la même manière que PHP pour l'incrémentation de préfix et postfix.

0
répondu Asaph 2009-12-28 07:37:21

++ avant appel variable pré-incrément signifie incrément la valeur de la variable avant d'exécuter l'énoncé.

++ après la variable appelée POST-incrément signifie incrément la valeur de la variable après l'exécution de la déclaration.

les deux augmente la valeur de la variable.

$b=$a++; est équivalent à

$b=$a;//after
$a=$a+1;

$b=++$A;`est équivalent à

$a=$a+1;//before
$b=$a;

un autre exemple

$a=5;
echo $a++;//prints 5;

$a=5;
echo ++$a;//prints 6;
0
répondu Shaiful Islam 2015-01-30 23:42:59

Post-increment et pre-increment sont des opérateurs communs dans de nombreuses langues, Javascript étant à environ 30 ans d'être le premier. PHP supporte aussi le post-increment.

-3
répondu Ether 2009-12-28 07:33:00