2013-08-22 83 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

一個可能的問題是'爲(I = 0; I <50;我+ + ){'這裏''是一個全局變量,如果在任何一個函數內(我再次在全局範圍內)'我的值變爲> 50,那麼循環將被終止。嘗試'for(var i = 0; i <50; i ++){'而不是 –

+1

可以肯定:您只能看到一個警報?如果是這樣,執行'generator_function'中的某個函數時可能會發生錯誤。你是否檢查過控制檯,應該有錯誤信息。 – Teemu

+0

這些函數可以正常工作。我認爲@Arun可能正確地談論循環中的局部變量。我有很多這些,並想知道爲什麼你需要'var'。我會進行一些測試,但可以隨意將其作爲答案。 – Jon

回答

2

一個可能的問題是for(i=0; i<50; i++){這裏我是一個全局變量,如果裏面的任何一個函數(其中i再次在全局範圍內)將值更改爲> 50,那麼循環將終止,它們都引用相同的實例在全球範圍內。改爲嘗試for(var i=0; i<50; i++){

當在一個變量聲明使用var,該變量會在局部範圍內(其中,聲明它的函數)來創建

+0

似乎已經完成了這項工作,謝謝! – Jon