检查javascript函数是否存在变量并执行它
我的项目中有一个弹出系统。通过名称,例如“addnews”,它知道要添加哪个弹出内容以及处理表单所需的脚本。直到现在完成后,我总是做同样的事情。现在,在某些情况下,我想要做一些不同的事情。检查javascript函数是否存在变量并执行它
现在我想添加一个与前面的例子'addnews()'相同名称的JavaScript函数,并检查该函数是否存在。如果它运行它,否则做标准的事情。 (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
}
如果您在文档中使用此代码并且未加载complielly,则代码将无法找到addnews()函数,因为它在此代码之前未声明。
像评论:你需要使用
if (typeof window[functionName] == 'function')
这不是问题所在。 – 2013-02-10 00:20:35
你知道他的完整代码吗? :)我在一些项目中也使用这个代码,它工作正常。 – Mic 2013-02-10 00:22:35
'typeof functionName'总是一个字符串。 – 2013-02-10 00:23:28
这将做到这一点:
if (typeof eval(functionName) == 'function') {
eval(functionName+'()');
} else {
// Do something standard
}
更新:只有当话筒不工作的答案(whyever)使用。就像他说的,eval是非常危险的。
只有当输入可能来自不同于用户或网站本身的来源(例如来自其他用户的输入)时,“eval”才是危险的。除了潜在的危险之外,使用它只会导致更难维护代码和(可能不必要的)性能开销。 – 2013-02-10 01:22:09
我不太清楚你想达到的目标。为什么你必须测试一个函数是否存在?你试图解决的问题是什么? *“在完成之后,我总是做同样的事情,现在,在某些情况下,我想做一些不同的事情。”*我想这是你的核心问题,但为了正确地帮助你,你必须详细说明这一点。 – 2013-02-10 00:13:45