为什么后递增/递减运算符对循环内的变量没有任何影响?

cha*_*ier 1 javascript post-increment operator-keyword

var j = 0;
for( var i = 0; i < 100; i++){
    j = j++;
    console.log(j);
}
Run Code Online (Sandbox Code Playgroud)

上面的代码块的输出是100个零而不是1到100的数字?

j = j + 1; 
Run Code Online (Sandbox Code Playgroud)

另一方面,上面的代码按预期工作.这背后可能是什么原因?

Bil*_*ard 5

j++加载当前值j,然后递增变量,然后返回原始值.

j = j++在循环的每次迭代中重新分配原始值j,即0 j.

如果你只是j++;在循环中单独放一条线,你会发现它确实增加了.

  • @chaosifier`j = j++;`中的操作是1.返回j的当前值(0),2.增加j。3. 将返回值赋给 j。以该顺序。增加 2 j 后,但您在步骤 3 中将其设置回 0。编辑我的答案以尝试使其更清楚一些。 (2认同)