setTimeout()的执行
1个回答
展开全部
我们常常会遇到一种情况,setTimeout(code,millisec)中code包含形参,
例如:我们需要在1秒后向用户提示的信息存储于变量msg中, var msg='1shaspassed!';此时不论是直接执行 setTimeout(alert(msg),1000);//alert(msg)会被立即执行还是 setTimeout(“alert(msg)”,1000);//系统报错msgisnotdefined(chrome)都不能达到预期的目的,因为定时器会努力地将code转化为一个function对象,第一个错例里定时器立即执行code希求返回一个function对象,结果扑了空;第二个虽然成功封装出function对象,但是定时器在msg的可见域外执行code,所以msg得不到正确的传递
推荐的解决办法是使用匿名函数回调 var msg='1shaspassed!';setTimeout(function(){alert(msg);},1000);第一个参数传递了一个会调用所需语句的function对象,这样就解决了code带参的问题。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询