JS中setInterval、setTimeout不能传递带参数的函数的解决方案


Posted in Javascript onApril 28, 2013

在JS中无论是setTimeout还是setInterval,在使用函数名作为调用句柄时都不能带参数,而在许多场合必须要带参数,
这就需要想方法解决。
一、采用字符串形式:——(缺陷)参数不能被周期性改变
setInterval("foo(id)",1000);
二、匿名函数包装 (推荐)

window.setInterval(function() 
{ 
foo (id); 
}, 1000);

这样就可以周期性执行foo(id)这个函数,而且把变量id传递进去;
三、定义返回无参函数的函数
function foo(id) 
{ 
alert(id); 
} 
function _foo(id) 
{ 
return function() 
{ 
foo(id); 
} 
} 
window.setInterval(_foo(id),1000);

这里定义了一个函数_foo,用于接收一个参数,并返回一个不带参数的函数,在这个函数内部使用了外部函数的参数,从而对其调用,不需要使用参数。
在 window. setInterval函数中,使用_foo(id)来返回一个不带参数的函数句柄,从而实现了参数传递的功能。
四、修改setInterval
function foo(id) 
{ 
alert(id); 
} 
var _sto = setInterval; 
window.setInterval = function(callback,timeout,param) 
{ 
var args = Array.prototype.slice.call(arguments,2); 
var _cb = function() 
{ 
callback.apply(null,args); 
} 
_sto(_cb,timeout); 
} 
window.setInterval(hello,3000,userName);

以上的所有方法也适合setTimeout。
Javascript 相关文章推荐
javascript模拟实现C# String.format函数功能代码
Nov 25 Javascript
学习Bootstrap组件之下拉菜单
Jul 28 Javascript
基于jQuery实现放大镜特效
Oct 19 Javascript
JS设置下拉列表框当前所选值的方法
Dec 22 Javascript
JS实现放大、缩小及拖拽图片的方法【可兼容IE、火狐】
Aug 23 Javascript
ES6学习之变量的解构赋值
Feb 12 Javascript
JS中showModalDialog关闭子窗口刷新主窗口用法详解
Mar 25 Javascript
Angular实现下载安装包的功能代码分享
Sep 05 Javascript
vue2.0+vuex+localStorage代办事项应用实现详解
May 31 Javascript
mpvue全局引入sass文件的方法步骤
Mar 06 Javascript
基于iview的router常用控制方式
May 30 Javascript
JS highcharts动态柱状图原理及实现
Oct 16 Javascript
jquery在IE、FF浏览器的差别详细探讨
Apr 28 #Javascript
js自动下载文件到本地的实现代码
Apr 28 #Javascript
javascript结合html5 canvas实现(可调画笔颜色/粗细/橡皮)的涂鸦板
Apr 27 #Javascript
jQuery语法高亮插件支持各种程序源代码语法着色加亮
Apr 27 #Javascript
JQuery onload、ready概念介绍及使用方法
Apr 27 #Javascript
用jquery实现输入框获取焦点消失文字
Apr 27 #Javascript
javascript中强制执行toString()具体实现
Apr 27 #Javascript
You might like
PHP中鲜为人知的10个函数
2014/02/28 PHP
php通过前序遍历树实现无需递归的无限极分类
2015/07/10 PHP
PHP封装返回Ajax字符串和JSON数组的方法
2017/02/17 PHP
PHP文件上传小程序 适合初学者学习!
2019/05/23 PHP
javascript 支持ie和firefox杰奇翻页函数
2008/07/22 Javascript
javascript 面向对象编程 聊聊对象的事
2009/09/17 Javascript
javascript 按回车键相应按钮提交事件
2009/11/02 Javascript
含有CKEditor的表单如何提交
2014/01/09 Javascript
详解Angularjs filter过滤器
2016/02/06 Javascript
angularjs表格ng-table使用备忘录
2016/03/09 Javascript
JavaScript高级程序设计(第三版)学习笔记1~5章
2016/03/11 Javascript
javascript实现平滑无缝滚动
2020/08/09 Javascript
概述jQuery中的ajax方法
2016/12/16 Javascript
JS实现的RGB网页颜色在线取色器完整实例
2016/12/21 Javascript
jQuery Password Validation密码验证
2016/12/30 Javascript
Vue 让元素抖动/摆动起来的实现代码
2018/05/31 Javascript
vue-cli3.0配置及使用注意事项详解
2018/09/05 Javascript
vue实现微信获取用户信息的方法
2019/03/21 Javascript
vue动态配置模板 'component is'代码
2019/07/04 Javascript
解决vue中el-tab-pane切换的问题
2020/07/19 Javascript
python学习手册中的python多态示例代码
2014/01/21 Python
Python删除Java源文件中全部注释的实现方法
2017/08/30 Python
python3.7实现云之讯、聚合短信平台的短信发送功能
2019/09/26 Python
TensorFlow Autodiff自动微分详解
2020/07/06 Python
想学画画?python满足你!
2020/12/24 Python
赫里福德的一家乡村零售商店:Philip Morris & Son
2017/06/25 全球购物
波兰快递服务:Globkurier.pl
2019/11/08 全球购物
美国基督教约会网站:ChristianCafe.com
2020/02/04 全球购物
求网格中的黑点分布
2013/11/06 面试题
药学专业个人的自我评价
2013/12/31 职场文书
后勤服务中心总经理工作职责
2014/03/03 职场文书
食品安全宣传标语
2014/06/07 职场文书
稽核岗位职责
2015/02/10 职场文书
办公室禁烟通知
2015/04/23 职场文书
初一军训感言
2015/08/01 职场文书
HashMap实现保存两个key相同的数据
2021/06/30 Java/Android