Javascript 在处理程序中执行函数

Javascript 在处理程序中执行函数,javascript,Javascript,这有什么区别: function a(){ //... } setInterval(a, 1000); vs 除了在第二种情况下我可以传递参数这一点 它不一定是设置间隔。任何可以接受函数处理程序的函数。传递匿名函数也允许您调用someObject.a()并保留此 如果您编写setTimeout(someObject.a,300),则将在全局对象的上下文中调用a()方法,以便其this将成为窗口。如果它期望这个是某个对象,它就会崩溃 如果您编写setTimeout(function(){som

这有什么区别:

function a(){
//...
}

setInterval(a, 1000);
vs

除了在第二种情况下我可以传递参数这一点


它不一定是设置间隔。任何可以接受函数处理程序的函数。

传递匿名函数也允许您调用
someObject.a()
并保留

如果您编写
setTimeout(someObject.a,300)
,则将在全局对象的上下文中调用
a()
方法,以便其
this
将成为
窗口。如果它期望
这个
某个对象
,它就会崩溃


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

不仅允许您保留
,而且允许您传递参数,而无需为函数调用硬编码字符串。@ianpgall:Yes,但是OP在问题中已经说过了。@SLaks天哪,不敢相信我没有看到,谢谢你指出这一点。
setInterval(function(){
a();
}, 1000);