可能你曾经试着这样去给setTimeout()或setInterval()传递参数:
setTimeout('func("'+'hello,world!'+'")',2000);
这种方式存在两个明显的弊端:
- 无法传递object类型的参数
- 代码混乱,增加维护难度
事实上你完全可以使用闭包来解决这个问题。
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!");
