++ someVariable vs. someVariable ++ в JavaScript

В JavaScript вы можете использовать оператор ++ до ( pre-increment ) или после имени переменной ( post -increment ). В чем, если есть, различия между этими способами приращения переменной?

121
задан Bergi 25 May 2019 в 21:18
поделиться

4 ответа

Как и в других языках:

  • ++x (pre-increment) означает "увеличить переменную; значение выражения - конечное значение"
  • x++ (post-increment) означает "запомнить исходное значение, затем увеличить переменную; значение выражения - исходное значение"

Теперь, когда они используются в качестве отдельного оператора, они означают одно и то же:

x++;
++x;

Разница возникает, когда вы используете значение выражения в другом месте. For example:

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

x = 0;
y = array[++x]; // This will get array[1]
212
ответ дан 24 November 2019 в 01:30
поделиться

Я думал об этом вчера, читая этот ответ на вопрос о плохих предположениях в C/C++. Во всех ли случаях мы можем гарантировать, что Javascript ведет себя именно так? Или вы считаете, что использовать оператор инкремента внутри более сложного оператора вообще плохая практика?

.
1
ответ дан 5 October 2019 в 23:43
поделиться
  • ++x увеличивает значение, затем оценивает и сохраняет его.
  • x++ оценивает значение, затем увеличивает и сохраняет его.
var n = 0, m = 0;

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

Обратите внимание, что использование ++x дает небольшой выигрыш в производительности, поскольку вы читаете переменную, изменяете ее, затем оцениваете и сохраняете. В отличие от оператора x++, где вы читаете значение, оцениваете его, изменяете, а затем сохраняете.

39
ответ дан 24 November 2019 в 01:30
поделиться

Насколько я понимаю, если вы используете их отдельно, они делают то же самое. Если вы попытаетесь вывести их результат в виде выражения, они могут отличаться. Попробуйте использовать alert (i ++) по сравнению с alert (++ i), чтобы увидеть разницу. i ++ вычисляет i перед добавлением, а ++ i выполняет сложение перед вычислением.

См. http://jsfiddle.net/xaDC4/ для примера.

7
ответ дан 24 November 2019 в 01:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: