直接上代码了,
var j = 0;
for(var i = 0;i<5;i++){
j = j ++;
}
console.log(j);
请问输出多少呢?为什么?
j = j++;
没效果啊,直接j++;
不就好了
答案是0 因为 j = j++;
实际上你做了无效功,var a = j++
和var a = ++j
效果是有区别的执行完后第一个为a=0第二个为a=1楼主先弄懂j++ 和 ++j的区别就很好理解答案了
操作符优先级问题。
是j++先自增 再用等号赋值。
还是先赋值以后再自增。
结果是前者。等号右边的表达先计算
j ++; 这个表达式的值还是j 所以你这赋值语句根本没用 可以这样写 j=++j 就是你要的结果了
你这样是先执行了j=j,然后再执行j++,所以即使无限循环j还是0
0.
j++ 就是后自增
j = j++ 整个过程是这样的
先执行右边的,j++,在当个语句中j是不自增的
所以 j = 0
如此循环,还是0
如果换成表达式是
j++
结果就是5了