Chinaunix首页 | 论坛 | 博客
  • 博客访问: 106333
  • 博文数量: 36
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 330
  • 用 户 组: 普通用户
  • 注册时间: 2014-08-18 23:16
文章分类
文章存档

2016年(7)

2015年(20)

2014年(9)

我的朋友

分类: JavaScript

2014-08-22 09:43:10

基本介绍
setTimeout 定义和用法:
setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式。
语法:
setTimeout(code,millisec);
其中
code (必需):(本意是代码的意思)要调用的函数后要执行的 JavaScript 代码串。
millisec(必需):在执行代码前需等待的毫秒数。
提示:
setTimeout() 只执行 code 一次。如果要多次调用,请使用 setInterval() 或者让 code 自身再次调用 setTimeout().



执行带参数的code

我们常常会遇到一种情况,setTimeout(code,millisec)中code包含形参,

例如:我们需要在1秒后向用户提示的信息存储于变量msg中,

varmsg='1shaspassed!';

此时不论是直接执行

setTimeout(alert(msg),1000);//alert(msg)会被立即执行

还是

setTimeout(“alert(msg)”,1000);//系统报错msgisnotdefined(chrome)

都不能达到预期的目的,因为定时器会努力地将code转化为一个function对象,第一个错例里定时器立即执行code希求返回一个function对象,结果扑了空;第二个虽然成功封装出function对象,但是定时器在msg的可见域外执行code,所以msg得不到正确的传递

推荐的解决办法是使用匿名函数回调

varmsg='1shaspassed!';
setTimeout(function(){
alert(msg);
},1000);

第一个参数传递了一个会调用所需语句的function对象,这样就解决了code带参的问题。


阅读(1508) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~