为什么我的JavaScript循环仅返回最后一个值?

时间:2019-11-28 20:06:57

标签: javascript arrays loops

背景

我正在使用HTML / JavaScript制作简单的2D side-scroller game,并使用ES6管理我的游戏对象。

代码设计

我为每个关卡平台有2个数组要跟踪:

  • shortPlatform
  • longPlatform

对于每个平台,在 player 对象与相应的 platform 之间有一个单独的循环以检查碰撞

但是,循环仅允许与最后一个平台 发生冲突。


这是我的两个循环的代码:

                for (let i = 0; i < shortPlatform.length; i++) 
                {
                    shortPlatform[i].renderObject();

                    // check if collide with players
                    var dir = colCheck(player, shortPlatform[i]);
                }

                for (let x = 0; x < longPlatform.length; x++) 
                {
                    longPlatform[x].renderObject();

                    // check if collide with players
                    var dir2 = colCheck(player, longPlatform[x]);
                };

注意

我在这里已经阅读了许多其他有关闭包的答案,而且似乎无法使任何解决方案正常工作。

1 个答案:

答案 0 :(得分:0)

变量dirdir2for循环中是本地的。结果,每次循环迭代时都会被覆盖。尝试使用数组存储冲突的发生。