Назначение вместе с Постом приращения - PullRequest
0 голосов
/ 04 апреля 2019

Я немного запутался с выводом. Пробовал в Javascript

var x = 1;
x = x++;
console.log(x); //Its output is 1

Я думал, что это будет 2. потому что я делаю печать после постинкремента. Какие-либо взгляды на это?

Ответы [ 2 ]

6 голосов
/ 04 апреля 2019

Это правильно. Сначала идет присвоение, затем увеличение. Для сравнения:

var x = 1
var y = 1
x = x++
y = ++y

console.log(x, y)
3 голосов
/ 04 апреля 2019

Порядок, в котором выполняется x = x++, выглядит следующим образом:

  • Рассчитывается старое значение x (oldValue = 1)
  • Новое значение для x вычисляется путем добавления 1 к старому значению (newValue = 2)
  • Новое значение назначено для x. В этот момент х становится 2!
  • Возвращается старое значение (возвращается 1). На этом заканчивается оценка x++
  • Старое значение присваивается х. В этот момент х становится 1

Вышеуказанные правила описаны здесь . Правила указывают, что x увеличивается до назначения, а не после.

...