分配以及Post增量

问题描述 投票:-1回答:2

我对输出有点困惑。试过Javascript

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

我认为它是2.因为我在后增量后进行打印。对此有何看法?

javascript operators operator-precedence post-increment
2个回答
3
投票

执行x = x++的顺序如下:

  • 计算x的旧值(oldValue = 1)
  • 通过将1添加到旧值(newValue = 2)来计算x的新值
  • 新值分配给x。此时x变为2!
  • 返回旧值(返回值为1)。以上是对x++的评价
  • 旧值分配给x。此时x变为1

以上规则are described here。规则表明x在分配之前递增,而不是之后递增。


6
投票

这是正确的。首先是赋值,然后是递增。相比:

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

console.log(x, y)
© www.soinside.com 2019 - 2024. All rights reserved.