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

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

May 16, 2016 pm 05:11 PM
settimeout pembolehubah tempatan

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的第一个参数改成函数对象,而不是字符串,就可以了。
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Tag artikel panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah perbezaan antara pembolehubah tempatan dan pembolehubah global bagi fungsi C++? Apakah perbezaan antara pembolehubah tempatan dan pembolehubah global bagi fungsi C++? Apr 19, 2024 pm 03:42 PM

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

Analisis persaingan data pembolehubah global dan pembolehubah tempatan fungsi Golang Analisis persaingan data pembolehubah global dan pembolehubah tempatan fungsi Golang May 21, 2023 am 08:19 AM

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? Ralat sintaks C++: Apabila fungsi mengembalikan penunjuk atau rujukan, ia tidak boleh mengembalikan pembolehubah tempatan atau objek sementara. Apa yang perlu saya lakukan? Aug 22, 2023 am 09:22 AM

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 Apakah perbezaan antara settimeout dan setinterval Aug 15, 2023 pm 02:06 PM

Apakah perbezaan antara settimeout dan setinterval

Inferens jenis pembolehubah tempatan dalam Java 10: Cara memudahkan kod anda menggunakan kata kunci var Inferens jenis pembolehubah tempatan dalam Java 10: Cara memudahkan kod anda menggunakan kata kunci var Jul 29, 2023 pm 07:32 PM

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

Apakah perbezaan antara setTimeout() dan setInterval() dalam JavaScript? Apakah perbezaan antara setTimeout() dan setInterval() dalam JavaScript? Sep 01, 2023 pm 03:01 PM

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

Gunakan fungsi clearTimeout dalam JavaScript untuk membatalkan pemasa setTimeout Gunakan fungsi clearTimeout dalam JavaScript untuk membatalkan pemasa setTimeout Nov 18, 2023 am 08:05 AM

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 Inferens jenis pembolehubah tempatan dalam Java 10: Cara menggunakan kata kunci var akhir dalam pernyataan suis Jul 31, 2023 pm 12:31 PM

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

See all articles