javascript

位置:IT落伍者 >> javascript >> 浏览文章

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


发布日期:2018年10月21日
 
js 定时器setTimeout无法调用局部变量的解决办法
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的第一个参数改成函数对象而不是字符串就可以了

上一篇:js中top/parent/frame概述及案例应用

下一篇:JavaScript Chart 插件整理