首页 web前端 js教程 js 定时器setTimeout无法调用局部变量的解决办法_javascript技巧

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

May 16, 2016 pm 05:11 PM
settimeout 局部变量

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

复制代码 代码如下:

var angle = 0;

function rotateloop() {
if (angle angle++;
//use angle
//......
setTimeout("rotateloop()", 100);
}
}

function beginrotate() {
//do something
//......
setTimeout("rotateloop()", 100);
}

这段代码有一个问题,就是产生了一个全局变量angle,这显然不是好的编程习惯,所以我们想到使用内嵌函数的方式,将代码改成如下:
复制代码 代码如下:

function beginrotate() {

var angle = 0;

function rotateloop() {
if (angle angle++;
//use angle
//......
setTimeout("rotateloop()", 100);
}
}
//do something
//......
setTimeout("rotateloop()", 100);
}

这样子改了之后,发现javascript报错了,rotateloop找不到,显然setTimeout没有找到rotateloop这个局部内嵌函数,这里只要稍微改一下就可以解决这个问题了,代码如下:
复制代码 代码如下:

function beginrotate() {

var angle = 0;

function rotateloop() {
if (angle angle++;
//use angle
//......
setTimeout(rotateloop, 100);
}
}
//do something
//......
setTimeout(rotateloop, 100);
}

只需要将setTimeout的第一个参数改成函数对象,而不是字符串,就可以了。
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章标签

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

C++ 函数的局部变量和全局变量有什么区别? C++ 函数的局部变量和全局变量有什么区别? Apr 19, 2024 pm 03:42 PM

C++ 函数的局部变量和全局变量有什么区别?

Golang函数的全局变量和局部变量的数据竞争分析 Golang函数的全局变量和局部变量的数据竞争分析 May 21, 2023 am 08:19 AM

Golang函数的全局变量和局部变量的数据竞争分析

C++语法错误:函数返回指针或引用时,不能返回局部变量或临时对象,应该如何处理? C++语法错误:函数返回指针或引用时,不能返回局部变量或临时对象,应该如何处理? Aug 22, 2023 am 09:22 AM

C++语法错误:函数返回指针或引用时,不能返回局部变量或临时对象,应该如何处理?

settimeout和setinterval有什么区别 settimeout和setinterval有什么区别 Aug 15, 2023 pm 02:06 PM

settimeout和setinterval有什么区别

Java 10中的局部变量类型推断:如何使用var关键字简化代码 Java 10中的局部变量类型推断:如何使用var关键字简化代码 Jul 29, 2023 pm 07:32 PM

Java 10中的局部变量类型推断:如何使用var关键字简化代码

setTimeout()和setInterval()在JavaScript中有什么区别? setTimeout()和setInterval()在JavaScript中有什么区别? Sep 01, 2023 pm 03:01 PM

setTimeout()和setInterval()在JavaScript中有什么区别?

在JavaScript中使用clearTimeout函数取消setTimeout的计时器 在JavaScript中使用clearTimeout函数取消setTimeout的计时器 Nov 18, 2023 am 08:05 AM

在JavaScript中使用clearTimeout函数取消setTimeout的计时器

Java 10中的局部变量类型推断:如何在switch语句中使用final var关键字 Java 10中的局部变量类型推断:如何在switch语句中使用final var关键字 Jul 31, 2023 pm 12:31 PM

Java 10中的局部变量类型推断:如何在switch语句中使用final var关键字

See all articles