js 定时器setTimeout无法调用局部变量的解决办法_javascript技巧
May 16, 2016 pm 05:11 PMjavascript中定时器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的第一个参数改成函数对象,而不是字符串,就可以了。

Artikel Panas

Alat panas Tag

Artikel Panas

Tag artikel panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Apakah perbezaan antara pembolehubah tempatan dan pembolehubah global bagi fungsi C++?

Analisis persaingan data pembolehubah global dan pembolehubah tempatan fungsi Golang

Ralat sintaks C++: Apabila fungsi mengembalikan penunjuk atau rujukan, ia tidak boleh mengembalikan pembolehubah tempatan atau objek sementara. Apa yang perlu saya lakukan?

Apakah perbezaan antara settimeout dan setinterval

Inferens jenis pembolehubah tempatan dalam Java 10: Cara memudahkan kod anda menggunakan kata kunci var

Apakah perbezaan antara setTimeout() dan setInterval() dalam JavaScript?

Gunakan fungsi clearTimeout dalam JavaScript untuk membatalkan pemasa setTimeout

Inferens jenis pembolehubah tempatan dalam Java 10: Cara menggunakan kata kunci var akhir dalam pernyataan suis
