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

関数がglobalの場合は、次の方法で確認できます。

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

}

それ以外の場合は、変数 "somevar" (この場合は文字列) の型をチェックしているだけです。

グローバルではないが、何らかのオブジェクトに存在する場合window、上記の例の を潜在的な関数が存在するオブジェクトの名前に置き換えることができます。それ自体が非グローバル スコープの単なる関数である場合は、運が悪いです。

于 2013-05-25T21:18:11.390 に答える