0

基本上我试图检查一个函数是否动态存在..

这是我的代码:

var somevar = 'somefunction';

if(typeof somevar === 'function'){
    somefunction();
}

function somefunction(){
   alert('something');
}

上面的代码不起作用

有没有办法实现我想要实现的目标?

4

3 回答 3

1

试试这个 :

var somevar = 'somefunction';

if(typeof eval(somevar) === 'function'){
    //somefunction();
    eval(somevar+'()');
}

function somefunction(){
   alert('something');
}
于 2013-05-25T21:28:48.390 回答
0

如果函数是全局的,你可以通过检查;

if (typeof window[somevar] === "function") {

}

否则,您只是检查变量“somevar”的类型(在这种情况下,在字符串中)。

如果它不是全局的,但存在于某个对象上,则可以window在上面的示例中将其替换为存在潜在函数的对象的名称。如果它只是一个非全局范围内的函数,那么你就不走运了。

于 2013-05-25T21:18:11.390 回答
0

某种 jsfiddle

var somevar = 'somefunction';

if(isFunction(eval(somevar))){
    eval(somevar+'()');
}

function somefunction(){
   alert('something');
}

function isFunction(x){
    return Object.prototype.toString.call(x) === "[object Function]";
}
于 2013-05-25T21:46:48.460 回答