Par exemple, ceci: maintenant Je comprends que B prend la valeur d'A et a ensuite une incrémentation. Cependant, je ne comprends pas pourquoi c'est le cas. La principale raison pour laquelle les créateurs de JavaScript le voudraient cela. Quel est l'avantage à cet autre que des débutants déroutants? P> p> a code> contient
124 code> et
b code> contient
123 CODE> P>
7 Réponses :
Notez que vous pouvez également écrire qui a l'effet que vous attendez probablement. P> Il est important de réaliser qu'il y a deux choses qui se passent ici: le l'affectation et l'incrément et la langue doivent définir dans quel ordre ils se produiront. Comme nous l'avons disponible à la fois pour ceux d'entre nous d'un antécédents C, C'est assez naturel. Si PHP se comporte différemment, nous nous demandons peut-être pourquoi PHP a choisi de s'écarter de ce que nous sommes habitués à. P> p> ++ a code> et
a ++ code> il est logique qu'ils doivent avoir des significations différentes. P>
Post-Incrément et pré-augmentation sont des opérateurs communs dans de nombreuses langues, JavaScript étant environ 30 ans d'être le premier. PHP prend en charge la post-incrémentation également. P>
++ code> peut être utilisé comme opérateur post-incrément, comme dans votre exemple, ou peut être utilisé comme opérateur de pré-augmentation si utilisé avant em> variable.
var b = ++a;
C'est la façon standard de le faire. L'opérateur postincrement attribue la valeur, puis les incréments. P>
La préincrèce ( Je ne suis pas familier avec PHP et je ne peux pas dire comment cela le fait ou pourquoi. p> ++ a code>) par incrémente puis attribue. p>
Lorsque vous mettez le JavaScript se comporte en fait exactement em> de la même manière que PHP pour le préfixe et l'incrémentation postfix. P> ++ code> après em> la variable, il est incrémenté après em> l'affectation. Vous pouvez également mettre le
++ code> avant em> la variable et qu'il est incrémenté avant em> l'affectation. P>
C'est pourquoi cela s'appelle "opérateur post-incrémentation". Essentiellement, tout est une expression em> qui entraîne une valeur. BTW, même Quoi qu'il en soit, la chose spéciale sur une expression avec Ceci est assez standard. P> A + 1 code> est une expression qui entraîne la valeur 124. Si vous attribuez ceci à
B code> avec
B = A + 1 code>,
b code> a la valeur de 124. Si vous n'attribuez pas le résultat à quoi que ce soit,
A + 1 code> entraînera toujours la valeur 124, il sera juste jeté immédiatement depuis que vous êtes pas "attraper" ça n'importe où. p>
B = A + 1 code> est une expression qui retourne 124. La valeur résultante d'une expression d'attribution est la valeur attribuée. C'est pourquoi
c = b = A + 1 code> fonctionne comme prévu. P>
++ code> et
- code> est-ce en plus de retourner une valeur, le
++ code> L'opérateur modifie directement la variable. Alors, que se passe-t-il lorsque vous faites
b = a ++ code> est, l'expression
a ++ code> renvoie la valeur 123 et incréments
A code>. Le em> em> strud> increntiel est d'abord renvoyé la valeur, alors em> stry> incréments, tandis que le pré em> strong> incrémentor
++ a code> premier em> strong> augmente, puis renvoie la valeur. Si vous venez d'écraser
A ++ code> par lui-même sans affectation, vous ne remarquerez pas la différence. C'est ainsi que
A ++ code> est généralement utilisé, comme courte main pour
a = A + 1 code>. P>
Bonne réponse. Ma pensée était la suivante: pourquoi si A = 2 et B = A + 1, nous obtenons B = 3 et A conserve sa valeur initiale. Mais AutOncrement est une caractéristique spéciale dans les langages de programmation qui ne signifie pas seulement ajouter 1 et c'est là que j'ai été confondu, mais maintenant je l'obtiens.
Les deux incrémentes la valeur de la variable. p> ++ code> avant l'appel de variable avant incromption signifie incrémenter la valeur de la variable avant d'exécuter la déclaration.
++ Code> Après la variable appelé Post-Ingrement signifie incrémenter la valeur de variable après avoir exécuté la déclaration.
$ b = $ a ++; code> est équivalent à p>
$a=5;
echo $a++;//prints 5;
$a=5;
echo ++$a;//prints 6;
Il n'y a pas de différence entre JavaScript et PHP dans le comportement de l'opérateur d'incrément.
Bien que vous puissiez écrire cela en JavaScript, ce comportement est le même que la plupart (n'importe quel?) Langue de style C.
Merci à tous pour votre réponse. Donc, cela doit avoir quelque chose à voir avec la programmation orientée objet. Après avoir utilisé PHP depuis si longtemps, de la manière de la procédure, je suis venu vous attendre à ce que chaque fois qu'une variable soit sur le côté gauche de tout opérateur, il conserve toujours la valeur précédente, à moins que cela n'a été directement réaffecté. C'est une façon radicalement différente de penser pour moi et que je devrai maintenant m'habituer.
@Chad en fait non, cela n'a rien à voir avec OOP. PHP se comporte exactement de la même manière. Il s'agit d'expressions entraînant des valeurs.
Scratez la partie PHP, j'ai testé et il en informe de la même manière.
@Chad aucun manque de respect prévu; Cependant, les opérateurs post et pré-incrément sont des concepts assez basiques. Il semble que vous manquiez de nombreux fondamentaux de la programmation, tels que la différenciation des opérateurs de paradigmes. Je vous encourage tout simplement à prendre du temps pour revenir à des bases pour mieux comprendre les outils que vous utilisez.