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

Как вызвать анонимную функцию из анонимной функции?

0
DhruvPathak 4 Фев 2013 в 13:17

2 ответа

Лучший ответ

Дайте ему идентификатор:

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

Это то, что называется «выражением именованной функции». Идентификатор находится только в области видимости внутри функции, к которой он относится.

Не используйте arguments.callee так как он устарел и фактически выдает синтаксическую ошибку в строгом режиме.

2
James Allardice 4 Фев 2013 в 09:19

Если вы хотите избежать создания каких-либо новых имен функций верхнего уровня, вы можете поместить свой код в локальную функцию, которая дает вам имя функции для первоначального выполнения и передачи в setTimeout():

(function () {
    function doit() {
        if (some scripts loaded) {
            otherFunction();
        } else {
            window.setTimeout(doit, 100);
        }
    }
    // execute the first time
    doit();
})();
0
jfriend00 4 Фев 2013 в 09:19