2015-12-21 36 views
0

任何人都可以告訴我什麼是錯誤的,我只是試圖調用這個函數列表使用數組,而如果這是可能的事先感謝。inovke函數javascript while using

var funciones = ["basicas();", "likeFbk();", "cambiarFondo();"], 
     i = 0; 
while (funciones[i]) { 
    funciones[i]; 
    i++; 
} 

的JSLint顯示此錯誤:
91預計轉讓或函數調用,而是看到了一個表達。 funciones [I];
92意外的'++'。

解決了,我用「i + = 1;」而不是「我++;」和更新作爲一個字符串處理函數列表,這裏是代碼:

var funciones = [basicas, likeFbk, cambiarFondo], i = 0; 

    while (funciones[i]) { 
     funciones[i](); 
     i += 1; 
    } 

感謝的傢伙!

+0

這是更新的代碼? – James

+0

而不是手動增加索引,你可以讓** while **做這項工作。檢查我更新的答案如下: – James

回答

1

嘗試這種方式(不知道你打算做雖然什麼,我猜你想要遍歷除非在第i個指標沒有值)

var funciones = [basicas, likeFbk, cambiarFondo], i = 0; 

while (funciones[i]) 
{ 
    funciones[i](); 
    i++; 
} 
+0

非常感謝你,我不知道什麼應該被視爲一個字符串,我今天學到了一些新東西:)。 jslint現在只是給了我這個錯誤:** 92 \t意外的'++'。** –

+0

@ErickLs樂於提供幫助。 – gurvinder372

+0

忽略jslint。開始使用另一條棉絨。 – 2015-12-21 14:33:09

1

你不能調用這樣的功能。函數數組只是一個字符串列表而不是函數列表。你有這樣的兩種方式:

  1. 而不是字符串列表,如下面的功能使用列表:

    var functions = [basicas, likeFbk, cambiarFondo]; 
    while (i in funciones) { 
        functions[i](); 
    } 
    
  2. 使用eval評估包含JavaScript的可執行代碼字符串:

    var funciones = ["basicas();", "likeFbk();", "cambiarFondo();"], 
         i = 0; 
    while (funciones[i]) { 
        eval(funciones[i]); 
        i++; 
    } 
    

總是選擇第一種方法,因爲第二種方法被認爲是邪惡的。

+0

非常感謝,我不知道應該把什麼當作一個字符串,我今天學到了一些新東西:)。 jslint現在只是給了我這個錯誤:** 92 \t意外的'++'** –

+0

如果第二個是邪惡的,爲什麼要顯示它? – 2015-12-21 14:33:30

+0

因爲它也是給定問題的有效解決方案。知道還有另一種這樣的解決方案並沒有什麼壞處。:) – James

0

或者如果你喜歡

var call = Function.call; 
[basicas, likeFbk, cambiarFondo].forEach(call, call); 

這是如何工作留給讀者作爲練習。

相關問題