2013-07-29 74 views
0

函數的名稱存儲在另一個函數的值中,我需要使用另一個函數調用該函數。使用另一個函數的值調用函數

我需要調用彈出()函數

random() = 'popup()' 

if ($.cookie('optin-page')) { 

} 

我試圖

if ($.cookie('optin-page')) { 
    window[random()]; 
} 

回答

6

不能賦值給一個函數調用的返回值。其中有=的聲明的左側不能以()結束。 (即代碼的第一行是錯誤)。

如果你想要把一個全球功能與一個名爲random那麼函數的返回值相匹配的名稱,您可以:

window[random()](); 

...但任何你想這樣做的時候,你也許應該在對象存儲這些功能,然後叫他們爲對象的方法:

var foo = { 
    a: function() { 
     alert('e.g.'); 
    } 
}; 
function picker() { 
    return "a"; 
} 
foo[picker()](); 
+0

即時通訊對不起,我忘了說,該函數返回該值。它不是直接分配的。 – codingninja

+0

他有正確的想法。該字符串必須是函數名稱,沒有括號,如下所示:window [「functionName」](arguments); – milestyle

0

我想你會帶開關或東西更好,而不是僅僅調用什麼字符串你回來...

var functionToCall = random(); 

switch(functionToCall) 
{ 
case 'popup()': 
    popup(); 
    break; 
case 'function2()': 
    function2(); 
    break; 
default: 
    // throw an error INVALID FUNCTION CALLED 
} 

這可以讓你引入錯誤處理。

相關問題