0

它有什么区别:

function a(){
//...
}

setInterval(a, 1000);

对比

setInterval(function(){
a();
}, 1000);

除了很明显我可以在第二种情况下传递参数。

它不一定是 setInterval。任何可以接受函数处理程序的函数。

4

1 回答 1

2

传递匿名函数还允许您调用someObject.a()和保存this.

如果你写setTimeout(someObject.a, 300),该a()方法将在全局对象的上下文中被调用,所以它this就是window. 如果它期望thissomeObject,它将打破。

如果您编写setTimeout(function() { someObject.a(); }, 300),a()将在正确的上下文中调用。

于 2012-09-14T13:10:46.570 回答