2017-09-22 8 views
0

対関数名を渡す(私は右の用語を持っている期待して...)のjavascript:生命維持

私のコード、非常に単純化:

その後、として呼び出され
function foo(parm1, fn){ 
    // do stuff with parm1, and then... 
    window[fn](); 
} 

function bar(){ 
    // do the other thing 
} 

foo('some string', 'bar'); 

私はそうのように、関数式を使用したい(?):

foo('some string', function(){ // do the other thing }); 

'bar'が何をしなければならないかについての最初の例のように関数名を渡すオプションを保持している間は、多くのステップが必要です。私は試しました

function foo(parm1, fn){ 
    // do stuff with parm1, and then... 
    if(typeof fn != 'function'){ 
     window[fn](); 
    } else { 
     return true; 
    } 
} 

foo('some string', function(){ // but this never fires }); 

私は両方の方法がありますか?

+1

'関数foo(PARM1、FN){ // PARM1とのもの、および操作を行い、その後... 場合(typeof演算FN == '関数' ){ ウィンドウ[fn](); } else { fn(); } } foo( 'some string'、function(){console.log( 'function callback ...');}); ' – Ibro

+0

2番目のパラメータが文字列でグローバル関数ではない場合にエラーを防ぐ'typeof window [fn] == 'function''をチェックすることもできます。 – James

答えて

1

できます。それが関数である場合は、fnに電話をするのを忘れた!

if(typeof fn != 'function'){ 
    window[fn](); 
} else { 
    fn(); // fn is (probably) a function so lets call it 
} 
+0

タイプチェック('!== ')を使うことをお勧めします。 –

関連する問題