Deshalb wird es der "post-inkrementierende Operator" genannt. Im Wesentlichen ist alles ein Ausdruck, was zu einem Wert führt. a + 1
ist ein Ausdruck, der den Wert 124 ergibt. Wenn Sie dies b
mit b = a + 1
zuweisen, hat b
den Wert 124.Wenn Sie das Ergebnis nichts zuweisen, wird a + 1
immer noch den Wert 124 ergeben, es wird sofort verworfen, da Sie es nirgendwo "fangen".
BTW, auch b = a + 1
ist ein Ausdruck, der 124 zurückgibt. Der resultierende Wert eines Zuweisungsausdrucks ist der zugewiesene Wert. Deshalb funktioniert c = b = a + 1
so, wie Sie es erwarten würden.
Das Besondere an einem Ausdruck mit ++
und --
ist, dass der Operator ++
zusätzlich zur Rückgabe eines Werts die Variable direkt ändert. Was passiert also, wenn Sie b = a++
ist, der Ausdruck a++
gibt den Wert 123 zurück und erhöht a
. Die Post Inkrementierer kehrt zuerst den Wert, dann Inkremente, während die pre Inkrementierer ++a
ersten Inkremente, dann den Wert zurückgibt. Wenn Sie nur a++
selbst ohne Zuordnung geschrieben haben, werden Sie den Unterschied nicht bemerken. So wird üblicherweise a++
verwendet, als Short-Hand für a = a + 1
.
Dies ist ziemlich Standard.
Es gibt keinen Unterschied zwischen Javascript und PHP im Verhalten des Inkrementoperators. – Asaph
Obwohl Sie dies in JavaScript schreiben, ist dieses Verhalten das gleiche wie die meisten (jeder?) C-Stil Sprache. –
Vielen Dank für Ihre Antwort. Das muss also etwas mit objektorientierter Programmierung zu tun haben. Nachdem ich PHP so lange benutzt habe, bin ich in der prozeduralen Art davon ausgegangen, dass immer, wenn sich eine Variable auf der linken Seite eines Operators befindet, sie immer ihren vorherigen Wert behält, es sei denn, sie wurde direkt neu zugewiesen. Das ist eine radikal andere Denkweise für mich, an die ich mich jetzt gewöhnen muss. – Chad