自增i++的疑问?

直接上代码了,

var j = 0;
for(var i = 0;i<5;i++){
    j = j ++;
}

console.log(j);

请问输出多少呢?为什么?

阅读 3.4k
6 个回答

j ++; 这个表达式的值还是j 所以你这赋值语句根本没用 可以这样写 j=++j 就是你要的结果了

0.
j++ 就是后自增
j = j++ 整个过程是这样的
先执行右边的,j++,在当个语句中j是不自增的
所以 j = 0
如此循环,还是0

如果换成表达式是
j++

结果就是5了

答案是0 因为 j = j++;
实际上你做了无效功,var a = j++var a = ++j 效果是有区别的执行完后第一个为a=0第二个为a=1楼主先弄懂j++ 和 ++j的区别就很好理解答案了

j = j++;没效果啊,直接j++;不就好了

操作符优先级问题。
是j++先自增 再用等号赋值。
还是先赋值以后再自增。

结果是前者。等号右边的表达先计算

你这样是先执行了j=j,然后再执行j++,所以即使无限循环j还是0

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题