赋值和 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
在 赋值之前递增,而不是在赋值之后。
我对输出有点困惑。在 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
在 赋值之前递增,而不是在赋值之后。