检查javascript函数是否与变量一起存在并执行它

时间:2013-02-10 00:10:30

标签: javascript function variables

我的项目中有一个弹出系统。使用名称,例如'addnews',它知道要添加哪个弹出内容以及处理表单所需的脚本。到目前为止,我总是做同样的事情。现在,在某些情况下,我想做一些不同的事情。

现在我想添加一个具有相同名称的JavaScript函数,如前面的例子'addnews()',并检查该函数是否存在。如果它确实运行它,否则做标准的事情。 (1)

同时执行具有该名称作为变量的函数似乎不起作用。 (2)

var functionName = 'addnews';

if (typeof functionName == 'function') { // (1) typeof functionName = string
    window[functionName](); // (2) this doesn't work for me
} else {
    // Do something standard
}

function addnews() {
    // Do something special
}

2 个答案:

答案 0 :(得分:3)

如果您在文档中使用此代码并且未加载complitelly,则您的代码将找不到函数addnews(),因为它在此代码之前未声明。

与评论中一样:您需要使用

if (typeof window[functionName] == 'function') 

答案 1 :(得分:0)

这样做:

if (typeof eval(functionName) == 'function') { 
    eval(functionName+'()');
} else {
    // Do something standard
}

更新:如果Mic的答案不起作用(无论如何),请仅使用此项。就像他说eval非常危险。