balls[cnt++]=balls[i]的詳細(xì)解釋或其它例子
var?cnt=0 for(var?i=0;i<balls.length;i++){ ????if(balls[i].x+radius>0&&balls[i].x-radius<canvasWidth){ ????????balls[cnt++]=balls[i]; ????} }
我知道老師的解釋是,小球數(shù)組中的第0個(gè)到cnt-1個(gè)是在canvas畫布中,可是這種數(shù)組的賦值怎么解釋呢?就是balls[cnt++]=balls[i]這種數(shù)組賦值方式
2017-04-04
++i與i++不在賦值運(yùn)算中的話,應(yīng)該是相同的,都是自增,沒有運(yùn)算前運(yùn)算后
2017-09-19
假設(shè)屏幕中有5個(gè)小球①②③④⑤,第五個(gè)小球在屏幕內(nèi),故有
balls[0] ?????不符合if語(yǔ)句
balls[1] ?????不符合if語(yǔ)句
balls[2] ?????不符合if語(yǔ)句
balls[3] ?????不符合if語(yǔ)句
balls[4] √?????符合if語(yǔ)句
故有balls[0] = balls[4]
現(xiàn)在數(shù)組的樣子就為⑤②③④⑤,還是有5個(gè)元素。但是我們想做的是將屏幕之外的另外4個(gè)小球都刪除,只剩下一個(gè)元素。即使第5個(gè)小球(balls[4])是在屏幕內(nèi)的,但是它已經(jīng)復(fù)制給了balls[0],覆蓋了第一個(gè)元素,所以,只要將balls[0]之后的元素全部刪除就可以了。
讓我們來(lái)執(zhí)行
while(balls.length > cnt) ????balls.pop();
balls.length = 5 cnt = 0
5 > 0 pop()
balls.length = 4 cnt = 0
4>0 pop()
balls.length = 3 cnt = 0
3>0 pop()
balls.length = 2 cnt = 0
2>0 pop()
balls.length = 1 cnt = 0
1>0 pop()
0 不大于 0 循環(huán)結(jié)束。我們的數(shù)組中只剩一個(gè)在屏幕里的小球,其他的都被刪除了。
不知道我的理解是否有差錯(cuò),希望可以幫助您。
2017-04-04
看了你的博客后,把我給繞暈了,看了很久都沒看明白
2017-03-11
自己強(qiáng)答一波,相關(guān)思路我發(fā)到自己的博客了╮(╯▽╰)╭,大家可以看看
http://icke.site/2017/03/10/20170310-JavaScript-arr[i++]/