For doing things like
setTimeout(function () {
...
setTimeout(arguments.callee, 100);
}, 100);
I need something like arguments.callee
. I found information at javascript.info that arguments.callee
is deprecated:
This property is deprecated by ECMA-262 in favor of named function expressions and for better performance.
But what should be then used instead? Something like this?
setTimeout(function myhandler() {
...
setTimeout(myhandler, 100);
}, 100);
// has a big advantage that myhandler cannot be seen here!!!
// so it doesn't spoil namespace
BTW, is arguments.callee
cross-browser compatible?
Yes, that's what, theoretically, should be used. You're right. However, it doesn't work in some versions of Internet Explorer, as always. So be careful. You may need to fall back on arguments.callee
, or, rather, a simple:
function callback() {
// ...
setTimeout(callback, 100);
}
setTimeout(callback, 100);
Which does work on IE.