Javascript 定时器调用传递参数的方法


Posted in Javascript onNovember 12, 2009

无论是window.setTimeout 还是window.setInterval,在使用函数名作为调用句柄时都不能带参数,而在许多场合必需要带参数,这就需要想方法解决.
例如对于函数hello(_name),它用于针对用户名显示欢迎信息:

var userName="Tony"; 
//根据用户名显示欢迎信息 
function hello(_name){ 
alert("hello,"+_name); 
}

这时,如果企图使用以下语句来使hello函数延迟3 秒执行是不可行的:
window.setTimeout(hello(userName),3000);
这将使hello函数立即执行,并将返回值作为调用句柄传递给setTimeout 函数,其结果并不是程序需要的.而使用字符串形式可以达到想要的结果:
window.setTimeout("hello(userName)",3000);
这里的字符串是一段JavaScript 代码,其中的userName 表示的是变量.但这种写法不够直观,而且有些场合必须使用函数名,下面用一个小技巧来实现带参数函数的调用:
<script language="JavaScript" type="text/javascript"> 
<!-- 
var userName="jack"; 
//根据用户名显示欢迎信息 
function hello(_name){ 
alert("hello,"+_name); 
} 
//创建一个函数,用于返回一个无参数函数 
function _hello(_name){ 
return function(){ 
hello(_name); 
} 
} 
window.setTimeout(_hello(userName),3000); 
//此处也可以写为window.setTimeout( function(){return hello(userName)}, 3000); 
//就不用再定义function _hello() 
//--> 
</script>

这里定义了一个函数_hello,用于接收一个参数,并返回一个不带参数的函数,在这个函数内部使用了外部函数的参数,从而对其调用,不需要使用参数.在window.setTimeout函数中,使用_hello(userName)来返回一个不带参数的函数句柄,从而实现了参数传递的功能.
Javascript 相关文章推荐
javascript 一些用法小结
Sep 11 Javascript
JavaScript代码复用模式实例分析
Dec 02 Javascript
javascript内置对象arguments详解
Mar 16 Javascript
完美兼容IE,chrome,ff的设为首页、加入收藏及保存到桌面js代码
Dec 17 Javascript
详解jQuery移动页面开发中的ui-grid网格布局使用
Dec 03 Javascript
jsonp跨域请求数据实现手机号码查询实例分析
Dec 12 Javascript
jquery实现具有嵌套功能的选项卡
Feb 12 Javascript
获取input标签的所有属性的方法
Jun 28 Javascript
jQuery实现的右下角广告窗体跟随效果示例
Sep 16 Javascript
arcgis for js 修改infowindow样式的方法
Nov 02 Javascript
JS通过位运算实现权限加解密
Aug 14 Javascript
vue给对象动态添加属性和值的实例
Sep 09 Javascript
Ext.FormPanel 提交和 Ext.Ajax.request 异步提交函数的区别
Nov 12 #Javascript
JS解析XML的实现代码
Nov 12 #Javascript
跨域表单提交状态的变相判断代码
Nov 12 #Javascript
JS 中document.URL 和 windows.location.href 的区别
Nov 11 #Javascript
ASP中进行HTML数据及JS数据编码函数
Nov 11 #Javascript
javascript 日期常用的方法
Nov 11 #Javascript
Jquery在IE7下无法使用 $.ajax解决方法
Nov 11 #Javascript
You might like
ip签名探针
2006/10/09 PHP
php通过header发送自定义数据方法
2018/01/18 PHP
PHP函数用法详解【初始化、嵌套、内置函数等】
2020/06/02 PHP
intro.js 页面引导简单用法 分享
2013/08/06 Javascript
jQuery超简单选项卡完整实例
2015/09/26 Javascript
JavaScript实现横向滑出的多级菜单效果
2015/10/09 Javascript
chrome浏览器当表单自动填充时如何去除浏览器自动添加的默认样式
2015/10/09 Javascript
基于javascript实现简单的抽奖系统
2020/04/15 Javascript
Bootstrap打造一个左侧折叠菜单的系统模板(一)
2016/05/17 Javascript
angular基于路由控制ui-router实现系统权限控制
2016/09/27 Javascript
使用ES6语法重构React代码详解
2017/05/09 Javascript
jquery获取transform里的值实现方法
2017/12/12 jQuery
详解React+Koa实现服务端渲染(SSR)
2018/05/23 Javascript
angular6.0开发教程之如何安装angular6.0框架
2018/06/29 Javascript
Angular2之二级路由详解
2018/08/31 Javascript
vue input标签通用指令校验的实现
2019/11/05 Javascript
vue-video-player 断点续播的实现
2021/02/01 Vue.js
关于pip的安装,更新,卸载模块以及使用方法(详解)
2017/05/19 Python
解决Pycharm出现的部分快捷键无效问题
2018/10/22 Python
使用Python自动化破解自定义字体混淆信息的方法实例
2019/02/13 Python
Python获取命令实时输出-原样彩色输出并返回输出结果的示例
2019/07/11 Python
python双端队列原理、实现与使用方法分析
2019/11/27 Python
python Manager 之dict KeyError问题的解决
2019/12/21 Python
如何基于python实现画不同品种的樱花树
2020/01/03 Python
在python中利用pycharm自定义代码块教程(三步搞定)
2020/04/15 Python
浅析CSS3 用text-overflow解决文字排版问题
2020/10/28 HTML / CSS
Tretorn美国官网:瑞典外套和鞋类品牌,抵御风雨
2018/07/19 全球购物
英国二手iPhone、音乐、电影和游戏商店:musicMagpie
2018/10/26 全球购物
教师演讲稿范文
2014/01/08 职场文书
迅雷Cued工作心得体会
2014/01/27 职场文书
物业品质提升方案
2014/06/08 职场文书
个人自查自纠材料
2014/10/14 职场文书
限期整改通知书
2015/04/22 职场文书
教师节大会主持词
2015/07/06 职场文书
用Python生成会跳舞的美女
2022/01/18 Python
Nginx虚拟主机的配置步骤过程全解
2022/03/31 Servers