将IIFE传递给将回调作为参数的函数

时间:2016-07-20 22:22:57

标签: javascript jquery callback iife

我正在从浏览器扩展中删除jQuery,我编写了一个简单的方法(应该可以跨浏览器工作)来检查DOM是否已加载。这是方法:

domReady: function(fn) {
    if(document.readyState === 'interactive' || document.readyState === 'complete'){
        if(fn && typeof fn === 'function'){
            fn();
        }
    } else {
        document.addEventListener("DOMContentLoaded", function() { 
            if(fn && typeof fn === 'function'){
                fn();
            }
        });             
    }
}

这适用于简单的函数,例如domReady(pageLoad)。我想知道是否可以将IIFE传递给domReady方法。我有一个jQuery代码块:

$(function(a){
    return function(){
        _Tools.drawBar(a);
    }
}(action));

我不完全确定为什么这都包含在jQuery中并立即调用但我的猜测是在DOM加载时执行此代码并将此函数保持为私有。我想知道将此函数传递给domReady方法是否合法,如下所示:

domReady(function(a){
    return function(){                                                  
        _Tools.drawBar(a);
    }
}(action));

当我在chrome dev控制台中尝试类似的东西时,我得到一个语法错误,说传递给domReady方法的函数不是函数,但函数仍然执行。有没有一种方法可以改变domReady方法来容纳IIFE?任何帮助将不胜感激。感谢

0 个答案:

没有答案