为了账号安全,请及时绑定邮箱和手机立即绑定

老师,我 想分清这三个定义变量的方法为什么结果不一样呢?

老师,您好。 我想问的问题是在while循环下,i++, i=i++, i=i+1 , 这三个变量,我前提的判断条件已经是i<=100了,i++和i=i+1的输出结果一样。为什么i=i++的输出结果无线循环呢?谢谢老师

正在回答

3 回答

i=i++; 在循环中正常人都不会这么写,要么直接i++,要么i = i+1,要么i = ++i。你这样写i=i++和i=i没什么区别。

没必要纠结这些无意义的东西,有这个时间还不如去点实际的东西。

0 回复 有任何疑惑可以回复我~
#1

Evan_Ma 提问者

好吧,听你的
2017-07-06 回复 有任何疑惑可以回复我~

因为 i=i++;是先赋值参加运算,后自增,也就是说在运算结束之前都不会自增,在for循环这个闭包中,运算不会停止,i就一直是初始值,只有当跳出这个闭包运算之后i才会自增,但你的i一直是初始值,所以一直是<=100的,就进入了无限循环 

for(var i=0;i<3;){

i=++i;

console.log(i);

}

如此问题解决,原因是i先赋值了,并且直接参与到闭包中

1 回复 有任何疑惑可以回复我~
#1

Evan_Ma 提问者

谢谢大神
2017-06-22 回复 有任何疑惑可以回复我~

因为i=i++是先将“=”右边的i赋值给左边的i,然后i再自增,所以无论i自增到什么值,都和循环后的i没有关系,循环后的i永远都是100,满足你的条件i<=100,所以就一直不断进入无限循环了。

1 回复 有任何疑惑可以回复我~
#1

Evan_Ma 提问者

谢谢大神
2017-06-22 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

老师,我 想分清这三个定义变量的方法为什么结果不一样呢?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信