setTimeout()的执行

 我来答
神马5uK
2016-05-13 · TA获得超过235个赞
知道答主
回答量:162
采纳率:0%
帮助的人:117万
展开全部

我们常常会遇到一种情况,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带参的问题。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式