8 回答
TA贡献361条经验 获得超191个赞
a=++i,先让i+1,再赋值给a;a=++i,先将i赋值给a,再让i+1;
如上面这个例子, 先说++i的情况,
第一次循环:$div.html(++i)这句话之前,i=0,因此,先加1,再传递给html,所以html显示为1
第二次虚幻:因为刚才div的html为1了,所以$div.html(++i)这句话之前,i=1,再加1,再传递给html,显示2
所以++i是可以运行的;
i++的情况,
第一次循环:$div.html(++i)这句话之前,i=0,先将i=0传递给html,再加1,所以第一次循环结束时,html显示0,但是此时的i是1;
第二次循环:i是1,但是经过这句话i = parseInt($div.text()),i又变成了html的值(即0),然后又重复第一次循环,所以你看到一直是0;
你可以在 $div.html(++i);前后加上alert(i)进行测试
TA贡献1条经验 获得超2个赞
相同点:
i++和++i都是自增1.
不同点:
++i是先做i+1,再执行后面语句。(执行完本条语句i=i+1)
i++是先执行完后面语句,才+1。(执行完后面语句i=i+1)
为什么不计时:
可以理解为没有执行完后面语句,也就是循环未结束(无限循环)经过 i = parseInt($div.text()),i也是0。
什么逻辑:
就是这个逻辑。
TA贡献189条经验 获得超236个赞
建议你看看慕课的C语言基础,看完应该就能明白了。
最简单一句话,++i,就是先加1,在赋值。i++,就是先赋值,再加1。
本身,他俩都是实现自增,但是放到循环中的话,就会有影响。
例如,你用了setTimeout()方法,如果换成i++的话,一秒后执行的结果是不变的。
建议,你把setTimeout()换成setInterval() 自己仔细体会一下。望采纳
添加回答
举报