++someVariable vs. someVariable++ in JavaScript

Lesezeit: 4 Minuten

someVariable vs someVariable in JavaScript
Derek Adair

In JavaScript können Sie verwenden ++ Operator vor (Vorinkrement) oder nach dem Variablennamen (Post-Inkrement). Was sind, wenn überhaupt, die Unterschiede zwischen diesen Möglichkeiten, eine Variable zu inkrementieren?

  • Siehe auch den sprachunabhängigen Unterschied zwischen i++ und ++i in einer Schleife?

    – Bergi

    11. Oktober 2016 um 18:58 Uhr

  • Ich habe gestern darüber nachgedacht, als ich diese Antwort auf die Frage zu schlechten Annahmen in C/C++ gelesen habe. Können wir in allen Fällen garantieren, dass sich Javascript so verhält? Oder halten Sie es für eine schlechte Praxis, die Increment-Anweisung überhaupt in einer komplexeren Anweisung zu verwenden?

    – Palschwimmen

    30. Oktober 2019 um 21:00 Uhr

  • Der vorherige Kommentar ist eigentlich eine Kopie einer Antwort (eher eine Nicht-Antwort), die ich 2010 gepostet habe. Ich habe die Antwort gelöscht, aber Jon Skeet hatte geantwortet mit: „Wenn man sich ECMA-262 ansieht, scheint es ziemlich gut spezifiziert zu sein. “

    – Palschwimmen

    30. Oktober 2019 um 21:02 Uhr


Dasselbe wie in anderen Sprachen:

  • ++x (pre-increment) bedeutet “Variable inkrementieren; der Wert des Ausdrucks ist der Endwert”
  • x++ (post-inkrement) bedeutet “den ursprünglichen Wert merken, dann die Variable inkrementieren; der Wert des Ausdrucks ist der ursprüngliche Wert”

Wenn sie jetzt als eigenständige Anweisung verwendet werden, bedeuten sie dasselbe:

x++;
++x;

Der Unterschied entsteht, wenn Sie den Wert des Ausdrucks an anderer Stelle verwenden. Zum Beispiel:

x = 0;
y = array[x++]; // This will get array[0]

x = 0;
y = array[++x]; // This will get array[1]

  • Verflucht, ich hätte Sie fast mit einer Antwort geschlagen, wenn ich nicht angehalten hätte, um eine praktische Jsfiddle-Antwort zu laden. 😉

    – Chris

    12. August 2010 um 16:34 Uhr

  • Wie würde das aussehen, wenn Sie verwendet werden + 1 anstatt ++? Gibt es eine Möglichkeit, vor oder nach dem Addieren von Zahlen zu inkrementieren?

    – Keavon

    20. April 2014 um 4:38 Uhr

  • Ich würde gerne wissen, warum, wenn Sie diese Operation ausführen const r1 =(x++)+(x++); es führt nicht zu dem erwarteten Ergebnis gemäß Ihrem Beispiel.

    – Jean Jiménez

    19. Juli 2016 um 14:23 Uhr

  • @JeanJimenez: Nun, es erzeugt das Ergebnis ich erwarten. Zum Beispiel, wenn x beginnt mit 10, dem Wert von r1 ist 21, also 10+11. Der Wert des ersten x++ Ausdruck ist 10 und x wird auf 11 erhöht. Der Wert der Sekunde x++ Ausdruck ist 11 und x wird auf 12 erhöht.

    – Jon Skeet

    19. Juli 2016 um 14:25 Uhr


  • Lieber @JonSkeet, vielen Dank für diese superschnelle Antwort. Ich bin neu beim Erlernen von JavaScript und meine Verwirrung besteht darin, warum das eine inkrementiert und das andere nicht.

    – Jean Jiménez

    19. Juli 2016 um 14:31 Uhr

someVariable vs someVariable in JavaScript
Justin Kraft

  • ++x erhöht den Wert, wertet ihn aus und speichert ihn.
  • x++ wertet den Wert aus, erhöht ihn dann und speichert ihn.
var n = 0, m = 0;

alert(n++); /* Shows 0, then stores n = 1 */
alert(++m); /* Shows 1, then stores m = 1 */

Beachten Sie, dass die Verwendung geringfügige Leistungsvorteile mit sich bringt ++x wo möglich, weil Sie die Variable lesen, ändern, dann auswerten und speichern. Gegen die x++ Operator, bei dem Sie den Wert lesen, auswerten, ändern und dann speichern.

Wie ich sie verstehe, wenn Sie sie eigenständig verwenden, tun sie dasselbe. Wenn Sie versuchen, das Ergebnis als Ausdruck auszugeben, können sie sich unterscheiden. Probieren Sie alert(i++) im Vergleich zu alert(++i) aus, um den Unterschied zu sehen. i++ wertet vor der Addition zu i aus und ++i führt die Addition vor der Auswertung durch.

Sehen http://jsfiddle.net/xaDC4/ zum Beispiel.

Ich habe eine Erklärung zum Verständnis von Post-Increment und Pre-Increment. Also stelle ich es hier ein.

Lassen Sie uns zuweisen 0 zu x

let x = 0;

Beginnen wir mit dem Post-Inkrement

console.log(x++); // Outputs 0

Warum?

Lass uns das brechen x++ Ausdruck nach unten

x = x;
x = x + 1;

Die erste Anweisung gibt den Wert von zurück x welches ist 0

Und später, wenn Sie verwenden x Variable irgendwo, dann wird die zweite Anweisung ausgeführt

Die zweite Anweisung gibt den Wert von this zurück x + 1 Ausdruck, der ist (0 + 1) = 1

Denken Sie an den Wert von x in diesem Zustand, der ist 1

Beginnen wir nun mit dem Vorinkrement

console.log(++x); // Outputs 2

Warum?

Lass uns das brechen ++x Ausdruck nach unten

x = x + 1;
x = x;

Die erste Anweisung gibt den Wert von this zurück x + 1 Ausdruck, der ist (1 + 1) = 2

Die zweite Anweisung gibt den Wert von zurück x welches ist 2 damit x = 2 so kehrt es zurück 2

Ich hoffe, dies hilft Ihnen zu verstehen, was Post-Increment und Pre-Increment sind!

var a = 1;
var b = ++a;
alert('a:' + a + ';b:' + b); //a:2;b:2

var c = 1;
var d = c++;
alert('c:' + c + ';d:' + d); //c:2;d:1

jsfiddle

1646645113 270 someVariable vs someVariable in JavaScript
Clifford Fajardo

var x = 0, y = 0;

//post-increment: i++ returns value then adds one to it
console.log('x++ will log: ', x++); //0
console.log('x after x++ : ', x);    //1

//pre-increment: adds one to the value, then returns it
console.log('++y will log: ', ++y); //1
console.log('y after ++y : ', y);   //1

964780cookie-check++someVariable vs. someVariable++ in JavaScript

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy