分类: JavaScript
2014-08-22 09:43:10
执行带参数的code
我们常常会遇到一种情况,setTimeout(code,millisec)中code包含形参,
例如:我们需要在1秒后向用户提示的信息存储于变量msg中,
此时不论是直接执行
还是
都不能达到预期的目的,因为定时器会努力地将code转化为一个function对象,第一个错例里定时器立即执行code希求返回一个function对象,结果扑了空;第二个虽然成功封装出function对象,但是定时器在msg的可见域外执行code,所以msg得不到正确的传递
推荐的解决办法是使用匿名函数回调
第一个参数传递了一个会调用所需语句的function对象,这样就解决了code带参的问题。
varmsg='1shaspassed!';
setTimeout(alert(msg),1000);//alert(msg)会被立即执行
setTimeout(“alert(msg)”,1000);//系统报错msgisnotdefined(chrome)
varmsg='1shaspassed!';
setTimeout(function(){
alert(msg);
},1000);