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