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]这种数组赋值方式
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-03-08
假设屏幕中有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 循环结束。我们的数组中只剩一个在屏幕里的小球,其他的都被删除了。
不知道我的理解是否有差错,希望可以帮助您。
举报