Странное поведение JavaScript с for () - PullRequest
2 голосов
/ 04 апреля 2011

У меня есть такая функция:

var dostuff = function(thing){
  var count = myvar.length; // <- I know for sure it's larger than 1
  for (i = 0; i < count; i++)
    whatever(myvar[myvar.length - 1]);
},
...
dostuff(thing);
...

Проблема в том, что цикл for выполняется только whatever() один раз, даже если переменная count равна 4, 10, 20, 100 ...

Что я здесь не так делаю?

Ответы [ 4 ]

5 голосов
/ 04 апреля 2011

Не уверен, что вы пытаетесь сделать, но, если вы хотите вызвать функцию whatever для каждого элемента в myvar, вы должны использовать это:

  for (i = 0; i < count; i++)
    whatever(myvar[ i ], thing);

Обратите внимание на i вместо myvar.length - 1

4 голосов
/ 04 апреля 2011

есть ли у () также цикл с переменной "i"? это может быть установлено в глобальном масштабе. Вы должны объявить, что я локальный для функции dostuff, и использовать скобки для хорошей гигиены:

for(var i= 0; i < count; i++) {  
    whatever(...);
}
1 голос
/ 04 апреля 2011

Ничто не выскакивает из меня как явно неправильное, но с чего бы я начал:

  • Пара твиков, просто чтобы быть уверенными:
for (**var** i = 0; i < count; i++) **{**
  whatever(...);
**}**
  • Что сказал Паскаль: -D

Чувак, я медленный типер!

1 голос
/ 04 апреля 2011

вы пытались alert () значение myvar.length? также myvar является глобальной переменной? Паскаль прав, вы, вероятно, захотите использовать i, поскольку его значение будет учитываться через ваш объект myvar, если какая-либо функция не изменит длину myvar?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...