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