omiga

简单就好

setTimeout,setInterval参数传递

发表评论»

可能你曾经试着这样去给setTimeout()或setInterval()传递参数:

setTimeout('func("'+'hello,world!'+'")',2000);

这种方式存在两个明显的弊端:

  1. 无法传递object类型的参数
  2. 代码混乱,增加维护难度

事实上你完全可以使用闭包来解决这个问题。

function msg(s){
	return function(){alert(s)};
}
var m = msg("hello,world!");
setTimeout(m,2000);

当然你还可以使用curry化的思想,进一步完善代码:

function delayMsg(s){
	function msg(){
		alert(s);
	}
	setTimeout(msg,2000);
}
delayMsg("hello,world!");