函数的名称存储在另一个函数的值中,我需要使用另一个函数调用该函数。
我需要调用popup()函数
random() = 'popup()'
if ($.cookie('optin-page')) {
}
我试过
if ($.cookie('optin-page')) {
window[random()];
}
答案 0 :(得分:6)
您无法为函数调用的返回值赋值。其中包含=
的语句的左侧不能以()
结尾。 (即代码的第一行是错误的。)
如果要调用全局函数,其名称与名为random
的函数的返回值匹配,则可以:
window[random()]();
...但是当你考虑这样做时,你应该将这些函数存储在一个对象中,然后将它们作为该对象的方法来调用:
var foo = {
a: function () {
alert('e.g.');
}
};
function picker() {
return "a";
}
foo[picker()]();
答案 1 :(得分:0)
我认为你用开关或其他东西会更好,而不仅仅是调用你得到的任何字符串......
var functionToCall = random();
switch(functionToCall)
{
case 'popup()':
popup();
break;
case 'function2()':
function2();
break;
default:
// throw an error INVALID FUNCTION CALLED
}
这允许您引入错误处理。