2013-08-22 4 views
0

Я хочу вызвать несколько функций в цикле JavaScript для ',', но они вызываются только в первый раз, и петли завершаются.Вызывающие функции внутри циклов JavaScript для

Я попытался сделать функции уникальным путем передачи им значения, используя некоторые общие функции вызывающей такие как:

for(i=0; i<50; i++){ 
    alert('test'); 
    generator_function(i); 
} 


function generator_function(variable){ 
    function1(variable); 
    function2(variable); 
    function3(variable); 
    function4(variable); 
    var sum = local_array.reduce(function(a, b) { return a + b }); 
    var avg = sum/local_array.length; 
} 

Который, кажется, работает, но локальные массивы еще удерживать элементы из первых петля.

Есть ли лучший способ вызова набора функций внутри цикла? У меня есть глобальные массивы, которые меняются в этих циклах, и мне интересно, нужно ли им как-то локально, т. Е. Внутри функций?

+6

одна из возможных проблем является 'для (я = 0; я <50; я ++) {'here' i' - глобальная переменная, если внутри любой из функций (где i снова находится в глобальной области). Значение 'i's изменяется на> 50, тогда цикл будет прекращен. Попробуйте 'for (var i = 0; i <50; i ++) {' вместо –

+1

Для уверенности: вы можете видеть только одно предупреждение? Если это так, может произойти ошибка при выполнении одной из функций в 'generator_function'. Вы проверили консоль, должно появиться сообщение об ошибке. – Teemu

+0

Функции работают отлично самостоятельно. Я думаю, @Arun может быть прав, говоря о локальной переменной в циклах. У меня их было много, и я подумал, зачем вам нужен «вар». Я проведу несколько тестов, но не стесняюсь сказать это как ответ. – Jon

ответ

2

Одна из возможных проблем - for(i=0; i<50; i++){. Здесь i является глобальной переменной, если внутри любой из функций (где i снова находится в глобальной области) значение изменяется на> 50, тогда цикл будет прекращен, оба они ссылаются на один и тот же экземпляр в глобальном масштабе. Вместо этого попробуйте for(var i=0; i<50; i++){.

При использовании var в объявлении переменной, эта переменная будет создана в локальной области видимости (функция, в которой она объявлена)

+0

Это, похоже, проделало эту работу, спасибо! – Jon

Смежные вопросы