balls[cnt++]=balls[i]的详细解释或其它例子

来源:5-1 性能优化

标标哟

2017-03-08 14:04

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]这种数组赋值方式

写回答 关注

4回答

  • qq_春花花_0
    2017-04-04 14:27:37
    已采纳

    ++i与i++不在赋值运算中的话,应该是相同的,都是自增,没有运算前运算后

  • 王王王正中
    2017-09-19 21:39:45

    假设屏幕中有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 循环结束。我们的数组中只剩一个在屏幕里的小球,其他的都被删除了。

    不知道我的理解是否有差错,希望可以帮助您。


  • qq_春花花_0
    2017-04-04 14:29:53

    看了你的博客后,把我给绕晕了,看了很久都没看明白

    标标哟 回复qq_春花花...

    不要这么说自己,只要努力就会有收获

    2017-04-05 09:34:53

    共 3 条回复 >

  • 标标哟
    2017-03-11 14:10:07

    自己强答一波,相关思路我发到自己的博客了╮(╯▽╰)╭,大家可以看看

    http://icke.site/2017/03/10/20170310-JavaScript-arr[i++]/

    慕后端941... 回复标标哟

    好谢谢你哦你改的颜色我好喜欢哈哈,我去换主题嘻嘻~

    2017-08-19 21:06:14

    共 5 条回复 >

炫丽的倒计时效果Canvas绘图与动画基础

学习HTML5中最激动人心的技术Canvas,彻底释放自己的创造力

96746 学习 · 1000 问题

查看课程

相似问题