Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 随增职一起分配_Javascript_Operators_Operator Precedence_Post Increment - Fatal编程技术网

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)

我对输出有点困惑。在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)。这就结束了对
    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;}