关于定时器调用有参函数的问题

对于一个已经定义好的函数,如:函数

function sayhello(myname){
     alert("hello"+myname);  
}
setInterval(sayhello,300);

此时因为没法传递参数而只能输出hellospa

而对于另外一种写法:指针

function sayhello(myname){
     alert("hello"+myname);  
}
setInterval(sayhello(Name),300);

此时会发生一种现象就是,window直接调用sayhello函数,而且传入参数;code

显然这种方法不靠谱,所以对于这个问题其中一个比较经常使用的解决方法就是:blog

function timer(myname){
    function sayhello(myname){
     alert("hello"+myname);  
}
   return sayhello;
}
setInterval(sayhello(Name),300);

也就是说,咱们能够把须要调用的函数嵌入到另外一个函数中,而后把函数自身做为返回值(注意返回值不加括号)返回到新的函数中,io

在经过定时器传参给新函数,再经过新函数传参给须要点用的函数。function

 

其实主要缘由仍是在上一篇的随笔中提到的的一个函数加不加括号的问题,加了括号返回的就是整个函数体,因此会当即执行该函数,class

不加括号就是调用函数名,函数名就至关于一个指向函数的指针,而不是函数自己。定时器

相关文章
相关标签/搜索