javascript:传递函数名称与IIFE

时间:2017-09-22 18:38:46

标签: javascript function iife

(希望我的术语正确......)

我的代码,非常简化:

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 个答案:

答案 0 :(得分:1)

你可以。如果它是函数,您忘记调用fn

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