0

函数的名称存储在另一个函数的值中,我需要使用另一个函数调用该函数。

我需要调用 popup() 函数

random() = 'popup()'

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

} 

我试过了

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

2 回答 2

6

您不能为函数调用的返回值赋值。带有 in 的语句的左侧=不能以 结尾()。(即您的代码的第一行是一个错误)。

如果你想调用一个名称与被调用函数的返回值匹配的全局random函数,那么你可以:

window[random()]();

…但是任何时候你考虑这样做,你可能应该将这些函数存储在一个对象中,然后将它们作为该对象的方法调用:

var foo = { 
    a: function () { 
        alert('e.g.'); 
    } 
};
function picker() { 
    return "a";
}
foo[picker()]();
于 2013-07-29T20:39:37.277 回答
0

我认为你最好使用开关或其他东西,而不是仅仅调用你得到的任何字符串......

var functionToCall = random();

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

这允许您引入错误处理。

于 2013-07-29T20:48:18.073 回答