Javascript 随增职一起分配
我对输出有点困惑。在Javascript中尝试Javascript 随增职一起分配,javascript,operators,operator-precedence,post-increment,Javascript,Operators,Operator Precedence,Post Increment,我对输出有点困惑。在Javascript中尝试 var x = 1; x = x++; console.log(x); //Its output is 1 我想是2点。因为我在后期增量后进行打印。有什么看法吗?没错。先赋值,然后递增。 比较: var x=1 变量y=1 x=x++ y=++y console.log(x,y)执行x=x++的顺序如下: 计算x的旧值(旧值=1) x的新值是通过将1添加到旧值(newValue=2)来计算的 将新值指定给x此时x变为2 返回旧值(返回值为1)
var x = 1;
x = x++;
console.log(x); //Its output is 1
我想是2点。因为我在后期增量后进行打印。有什么看法吗?没错。先赋值,然后递增。 比较:
var x=1
变量y=1
x=x++
y=++y
console.log(x,y)
执行x=x++
的顺序如下:
- 计算x的旧值(旧值=1)
- x的新值是通过将1添加到旧值(newValue=2)来计算的
- 将新值指定给x此时x变为2强>
- 返回旧值(返回值为1)。这就结束了对
x++
- 旧值被指定给x此时x变为1
以上规则。规则表明
x
在赋值之前递增,而不是在赋值之后递增。post增量中的post意味着它首先返回当前值和增加变量的post。然后将返回值赋回变量…这是因为将x++
的值赋回x
x++
返回增量之前的x
值,而++x
返回增量之后的值。这是唯一的区别。这回答了你的问题吗?因此,后增量从未发生过?不,它发生过-赋值后其值发生了变化,这意味着如果x=5++
,则x
为5
,但该值仍增加了1,但是没有存储在x
中x
是2
在表达式x++
被评估到x=
的赋值已经完成之间的一个短暂时刻……只需参考官方文档:如果x是3,那么++x将x设置为4并返回4,而x++将返回3并仅将x设置为4。(答案在“而x++返回3,然后才将x设置为4”部分中)您可以这样想象:function++(x){var tmp=x;x+=1;return tmp;}
…