分配以及职位增量

时间:2019-04-04 11:50:56

标签: javascript operators operator-precedence post-increment

我对输出有些困惑。用Java尝试

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

我一直认为应该是2.,因为我在增加后进行打印。有任何意见吗?

2 个答案:

答案 0 :(得分:6)

是正确的。分配首先进行,然后递增。 比较:

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

console.log(x, y)

答案 1 :(得分:3)

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

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

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