【问题标题】:can't call method inside a for each loop in javascript?不能在 javascript 中的 for each 循环中调用方法?
【发布时间】:2015-02-05 22:01:50
【问题描述】:

我正在通过玩这个游戏重新学习 JavaScript

http://play.elevatorsaga.com/

文档:http://play.elevatorsaga.com/documentation.html#docs

目前试图击败有两个电梯的第 4 级,我想使用 for each 循环遍历每个电梯对象,然后调用方法来执行以下操作:

            var maxFloor = 7;
            var basement = 0;
            // when each elevator is idle, go to each floor
            for each(var e in elevators){
                e.on("idle", function() {
                    //The elevator is idle, so let's go to all the floors (or did we forget one?)
                    for(var i = basement; i < maxFloor; i++){
                        e.goToFloor(i);     
                    }
                });
            }

为什么不编译?当在for each 循环之外调用__.on() 方法时,一切正常。对于 javascript,我是否缺少一些基本的东西?

谢谢

【问题讨论】:

  • e 并不是您在第二次循环发生时所认为的那样。
  • @KevinB 嗯,e 不是 elevator 吗?谢谢
  • 它将永远是最后一个,而不是您期望的那个。它也将是数组的索引,而不是值。
  • @KevinB 我明白了,我能够让它与普通的for 循环一起工作,并将var 视为int 并且有效。再次感谢!

标签: javascript


【解决方案1】:

这里可能有一些错误:

  • 取决于您的浏览器,for each 应为 for
  • for-in 构造迭代集合(即数组和对象)并将“索引”传递给in 之前命名的变量。在您的代码中,如果elevators 是像elevators = [elevator1, elevator2, ..., elevatorN] 这样的电梯对象数组,则每次for-in 循环e 将是电梯的索引,意思是e = 0, then e = 1, ..., e = n。因此,尝试命名ei 并在循环开头声明var e = elevators[i],您的代码应该可以工作。

【讨论】:

猜你喜欢
  • 2015-11-12
  • 1970-01-01
  • 2012-09-20
  • 2011-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-08
相关资源
最近更新 更多