Evan_Ma
2017-06-22 10:57
老师,您好。 我想问的问题是在while循环下,i++, i=i++, i=i+1 , 这三个变量,我前提的判断条件已经是i<=100了,i++和i=i+1的输出结果一样。为什么i=i++的输出结果无线循环呢?谢谢老师
i=i++; 在循环中正常人都不会这么写,要么直接i++,要么i = i+1,要么i = ++i。你这样写i=i++和i=i没什么区别。
没必要纠结这些无意义的东西,有这个时间还不如去点实际的东西。
因为 i=i++;是先赋值参加运算,后自增,也就是说在运算结束之前都不会自增,在for循环这个闭包中,运算不会停止,i就一直是初始值,只有当跳出这个闭包运算之后i才会自增,但你的i一直是初始值,所以一直是<=100的,就进入了无限循环
for(var i=0;i<3;){
i=++i;
console.log(i);
}
如此问题解决,原因是i先赋值了,并且直接参与到闭包中
因为i=i++是先将“=”右边的i赋值给左边的i,然后i再自增,所以无论i自增到什么值,都和循环后的i没有关系,循环后的i永远都是100,满足你的条件i<=100,所以就一直不断进入无限循环了。
Java入门第一季(IDEA工具)升级版
1165172 学习 · 17581 问题
相似问题