一个解决JS计时器setTimeout不调用局部变量
定时器的使用Javascript的setTimeout在一般如下。在调用beginrotate,它进入一个过程,执行rotateloop定期,如下:复制代码代码如下所示:
var角度= 0;
功能rotateloop(){
如果(角<360){
角度+;
使用角度
/……
setTimeout(rotateloop()
}
}
功能beginrotate(){
做某事
/……
setTimeout(rotateloop()
}
这个代码的一个问题是生成一个全局变量角,这显然不是一个好的编程习惯。因此,我们考虑使用嵌入式函数将代码更改为以下代码:
复制代码代码如下所示:
功能beginrotate(){
var角度= 0;
功能rotateloop(){
如果(角<360){
角度+;
使用角度
/……
setTimeout(rotateloop()
}
}
做某事
/……
setTimeout(rotateloop()
}
在那之后,发现Javascript是错的,而rotateloop找不到它。显然,setTimeout不找到rotateloop的地方嵌入功能。这里我们可以稍作修改来解决这个问题。代码如下:
复制代码代码如下所示:
功能beginrotate(){
var角度= 0;
功能rotateloop(){
如果(角<360){
角度+;
使用角度
/……
setTimeout(rotateloop,100);
}
}
做某事
/……
setTimeout(rotateloop,100);
}
你只需要改变第一的setTimeout函数的参数对象,而不是一个字符串,它的确定。