赋值和 Post 递增

Assignment along with Post increment

我对输出有点困惑。在 Javascript

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

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

没错。先赋值,然后递增。 比较:

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

console.log(x, y)

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

  • 计算出 x 的旧值(oldValue = 1)
  • x 的新值是在旧值上加 1 (newValue = 2)
  • 新值已分配给 x。 此时x变成2了!
  • 旧值已 returned(return 值为 1)。 x++
  • 的评估到此结束
  • 旧值已分配给 x。 此时x变成1

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