javascript中定时器setTimeout的用法一般如下
调用beginrotate之后就进入定时执行rotateloop的一个过程
如下代码
复制代码 代码如下:
var angle = ;
function rotateloop() {
if (angle < ) {
angle++;
//use angle
//
setTimeout(rotateloop() );
}
}
function beginrotate() {
//do something
//
setTimeout(rotateloop() );
}
这段代码有一个问题就是产生了一个全局变量angle这显然不是好的编程习惯所以我们想到使用内嵌函数的方式将代码改成如下
复制代码 代码如下:
function beginrotate() {
var angle = ;
function rotateloop() {
if (angle < ) {
angle++;
//use angle
//
setTimeout(rotateloop() );
}
}
//do something
//
setTimeout(rotateloop() );
}
这样子改了之后发现javascript报错了rotateloop找不到显然setTimeout没有找到rotateloop这个局部内嵌函数这里只要稍微改一下就可以解决这个问题了代码如下
复制代码 代码如下:
function beginrotate() {
var angle = ;
function rotateloop() {
if (angle < ) {
angle++;
//use angle
//
setTimeout(rotateloop );
}
}
//do something
//
setTimeout(rotateloop );
}
只需要将setTimeout的第一个参数改成函数对象而不是字符串就可以了