![](/img/trans.png)
[英]How can i call that function inside that anonymous javascript? (TinyMce example)
[英]How can I call an anonymous function from inside itself in JavaScript?
是否可以重新运行功能'check'而无需在else语句中调用check()? 也许以某种方式称呼自己?
如果我有该函数的多个实例,除非我将其更改为check1,check2等,否则它们最终会互相调用。 一个性能杀手,我只是在尝试一个原型应用程序。
(function check () {
if (typeof foo !='undefined') {
// do stuff
} else {
console.log("Failed to load, trying again");
setTimeout(function(){ check(); }, 10);
}
})();
好了,您可以使用arguments.callee
来调用它,但这不是一个好主意,会降低性能,并且在严格模式下无效。
什么你引用的是有效的JavaScript, 不应该做check
调用另一个check
功能,如果你有一个在它旁边。 但是,令人遗憾的是, 它将在IE8和更早的版本中使用,因为它们很不正确地将名称check
泄漏给了周围的范围(命名函数表达式没有像函数声明那样将函数名添加到周围的范围中,但在IE8和更早的版本上[并且不是他们都错了])。
因此解决方案是使用匿名函数隐藏命名的函数:
(function() {
// A check function
check();
function check () {
if (typeof foo !='undefined') {
// do stuff
} else {
console.log("Failed to load, trying again");
setTimeout(function(){ check(); }, 10);
}
}
})();
(function() {
// A complete different one
check();
function check () {
if (typeof foo !='undefined') {
// do other stuff
} else {
console.log("Failed to load, trying again");
setTimeout(function(){ check(); }, 10);
}
}
})();
如何使用间隔而不是消除自身调用的需要,因为这将自动完成,直到您清除间隔:
(function(){
var interval = setInterval(function(){
if(typeof foo != 'undefined'){
clearInterval(interval);
// do stuff
}else{
console.log("Failed to load, trying again");
}
},10)
})();
为什么不这样做呢?
var inter;
function check() {
if (typeof foo !== 'undefined') {
clearInterval(inter);
// do stuff
} else {
console.log("Failed to load, trying again");
}
}
inter = setInterval(check, 10);
这不是替换的下降,但我认为它是更好的样式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.