(function () {
if (some scripts loaded) {
otherFunction();
} else {
window.setTimeout( "CALL_SELF_AGAIN_HERE" , 100);
}
})();
如何从匿名函数中调用匿名函数?
答案 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();
})();