js 定时器setTimeout无法调用局部变量的解决办法


Posted in Javascript onNovember 28, 2013

javascript中定时器setTimeout的用法一般如下,调用beginrotate之后就进入定时执行rotateloop的一个过程,如下代码:

var angle = 0; function rotateloop() { 
if (angle < 360) { 
angle++; 
//use angle 
//...... 
setTimeout("rotateloop()", 100); 
} 
} 
function beginrotate() { 
//do something 
//...... 
setTimeout("rotateloop()", 100); 
}

这段代码有一个问题,就是产生了一个全局变量angle,这显然不是好的编程习惯,所以我们想到使用内嵌函数的方式,将代码改成如下:
function beginrotate() { var angle = 0; 
function rotateloop() { 
if (angle < 360) { 
angle++; 
//use angle 
//...... 
setTimeout("rotateloop()", 100); 
} 
} 
//do something 
//...... 
setTimeout("rotateloop()", 100); 
}

这样子改了之后,发现javascript报错了,rotateloop找不到,显然setTimeout没有找到rotateloop这个局部内嵌函数,这里只要稍微改一下就可以解决这个问题了,代码如下:
function beginrotate() { var angle = 0; 
function rotateloop() { 
if (angle < 360) { 
angle++; 
//use angle 
//...... 
setTimeout(rotateloop, 100); 
} 
} 
//do something 
//...... 
setTimeout(rotateloop, 100); 
}

只需要将setTimeout的第一个参数改成函数对象,而不是字符串,就可以了。
Javascript 相关文章推荐
bootstrap data与jquery .data
Jul 07 Javascript
node.js中的http.request方法使用说明
Dec 14 Javascript
jQuery中ajax的post()方法用法实例
Dec 26 Javascript
jQuery过滤选择器用法分析
Feb 10 Javascript
JavaScript实现彩虹文字效果的方法
Apr 16 Javascript
jquery带翻页动画的电子杂志代码分享
Aug 21 Javascript
微信小程序 progress组件详解及实例代码
Oct 25 Javascript
JS创建对象的写法示例
Nov 04 Javascript
JavaScript中各数制转换全面总结
Aug 21 Javascript
js定时器实现倒计时效果
Nov 05 Javascript
微信小程序自定义轮播图
Nov 04 Javascript
JavaScript实现tab栏切换效果
Mar 16 Javascript
jquery使用淘宝接口跨域查询手机号码归属地实例
Nov 28 #Javascript
JS小功能(checkbox实现全选和全取消)实例代码
Nov 28 #Javascript
JS小功能(onmouseover实现选择月份)实例代码
Nov 28 #Javascript
JS小功能(setInterval实现图片效果显示时间)实例代码
Nov 28 #Javascript
JS小功能(操作Table--动态添加删除表格及数据)实现代码
Nov 28 #Javascript
JS小功能(offsetLeft实现图片滚动效果)实例代码
Nov 28 #Javascript
JS小功能(列表页面隔行变色)简单实现
Nov 28 #Javascript
You might like
php 论坛采集程序 模拟登陆,抓取页面 实现代码
2009/07/09 PHP
php $_SERVER[&quot;REQUEST_URI&quot;]获取值的通用解决方法
2010/06/21 PHP
PHP项目开发中最常用的自定义函数整理
2010/12/02 PHP
一些PHP Coding Tips(php小技巧)[2011/04/02最后更新]
2011/05/02 PHP
将word转化为swf 如同百度文库般阅读实现思路及代码
2013/08/09 PHP
php中删除数组的第一个元素和最后一个元素的函数
2015/03/07 PHP
PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能
2017/11/10 PHP
JS图片无缝滚动(简单利于使用)
2013/06/17 Javascript
jquery获取子节点和父节点的示例代码
2013/09/10 Javascript
jQuery中 $ 符号的冲突问题及解决方案
2016/11/04 Javascript
JS冒泡事件与事件捕获实例详解
2016/11/25 Javascript
原生js实现吸顶效果
2017/03/13 Javascript
原生JS封装_new函数实现new关键字的功能
2018/08/12 Javascript
js实现多张图片每隔一秒切换一张图片
2019/07/29 Javascript
原生JS实现多条件筛选
2020/08/19 Javascript
Python搭建FTP服务器的方法示例
2018/01/19 Python
浅谈flask中的before_request与after_request
2018/01/20 Python
python之matplotlib学习绘制动态更新图实例代码
2018/01/23 Python
Python如何获得百度统计API的数据并发送邮件示例代码
2019/01/27 Python
python读取txt文件并取其某一列数据的示例
2019/02/19 Python
python中下标和切片的使用方法解析
2019/08/27 Python
python使用多线程编写tcp客户端程序
2019/09/02 Python
Python print不能立即打印的解决方式
2020/02/19 Python
python 装饰器功能与用法案例详解
2020/03/06 Python
python生成xml时规定dtd实例方法
2020/09/21 Python
Html5移动端弹幕动画实现示例代码
2018/08/27 HTML / CSS
介绍一下linux的文件权限
2012/02/15 面试题
中医药大学毕业生自荐信
2013/11/08 职场文书
小学新学期教师寄语
2014/01/18 职场文书
平安建设工作方案
2014/06/02 职场文书
2014年中秋寄语
2014/08/11 职场文书
助学贷款贫困证明
2014/09/23 职场文书
求职自我评价范文100字
2014/09/23 职场文书
2015年事业单位办公室文员工作总结
2015/04/24 职场文书
2015年中学体育教师工作总结
2015/10/23 职场文书
党员学习中国梦心得体会
2016/01/05 职场文书