小编典典

Arguments.callee已过时-应该改用什么?

javascript

对于做类似的事情

setTimeout(function () {
    ...
    setTimeout(arguments.callee, 100);
}, 100);

我需要类似的东西arguments.callee。我在javascript.info中发现了arguments.callee已弃用的信息:

*ECMA-262 *不推荐使用此属性,而应使用 命名函数表达式并获得更好的性能。

但是,应该用什么代替呢? 像这样吗

setTimeout(function myhandler() {
    ...
    setTimeout(myhandler, 100);
}, 100);
// has a big advantage that myhandler cannot be seen here!!! 
// so it doesn't spoil namespace

顺便说一句,arguments.callee跨浏览器兼容吗?


阅读 487

收藏
2020-05-01

共1个答案

小编典典

是的,理论上 应该 使用。你是对的。但是,它不能像以往一样在某些版本的Internet Explorer中工作。所以要小心
您可能需要依靠arguments.callee,或者更简单地说:

function callback() {
    // ...
    setTimeout(callback, 100);
}

setTimeout(callback, 100);

在IE上有效。

2020-05-01