如何在匿名函数中对同一函数进行setTimeout调用?

时间:2013-02-04 09:17:38

标签: javascript

 (function () {
        if (some scripts loaded) {
            otherFunction();
        } else {
            window.setTimeout( "CALL_SELF_AGAIN_HERE" , 100);
        }
    })();

如何从匿名函数中调用匿名函数?

2 个答案:

答案 0 :(得分:2)

给它一个标识符:

(function named () {
    if (some scripts loaded) {
        otherFunction();
    } else {
        window.setTimeout( named , 100);
    }
})();

这就是所谓的“命名函数表达式”。标识符仅在其引用的函数 inside 范围内。

不要使用arguments.callee,因为它已被弃用,实际上会在严格模式下抛出语法错误。

答案 1 :(得分:0)

如果您想避免创建任何新的顶级函数名称,可以将代码放在一个本地函数中,该函数为您提供最初执行的函数名称并传递给setTimeout()

(function () {
    function doit() {
        if (some scripts loaded) {
            otherFunction();
        } else {
            window.setTimeout(doit, 100);
        }
    }
    // execute the first time
    doit();
})();