2012-09-14 45 views
0

又有什么区别:执行功能

function a(){ 
//... 
} 

setInterval(a, 1000); 

VS

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

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

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

回答

2

通过匿名功能还允许您拨打someObject.a()并保留this

如果你写setTimeout(someObject.a, 300),该a()方法将在全球目标的背景下被调用,所以它的thiswindow。如果它预计thissomeObject,它会中断。

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

+0

它不仅允许你保存'this',而且它允许你传递参数而不用硬编码函数调用的字符串。 – Ian

+0

@ianpgall:是的,但OP已经在问题中说过了。 – SLaks

+0

@SLaks jeez,不敢相信我没有看到,谢谢指出。 – Ian