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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat 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

Perbezaan antara pembolehubah tempatan C++ dan pembolehubah global: Keterlihatan: Pembolehubah setempat dihadkan kepada fungsi penentu, manakala pembolehubah global boleh dilihat sepanjang program. Peruntukan memori: pembolehubah tempatan diperuntukkan pada tindanan, manakala pembolehubah global diperuntukkan dalam kawasan data global. Skop: Pembolehubah tempatan berada dalam fungsi, manakala pembolehubah global berada di seluruh program. Permulaan: Pembolehubah tempatan dimulakan apabila fungsi dipanggil, manakala pembolehubah global dimulakan apabila program bermula. Rekreasi: Pembolehubah tempatan dicipta semula pada setiap panggilan fungsi, manakala pembolehubah global dibuat hanya apabila program bermula.

Apakah perbezaan antara settimeout dan setinterval Apakah perbezaan antara settimeout dan setinterval Aug 15, 2023 pm 02:06 PM

Perbezaan antara settimeout dan setInterval: 1. Masa pencetus, settimeout adalah satu masa, ia melaksanakan fungsi sekali selepas menetapkan masa tunda, manakala setinterval adalah berulang, ia akan melaksanakan fungsi berulang kali pada selang masa yang ditetapkan , settimeout hanya dilaksanakan sekali, dan setinterval akan dilaksanakan berulang kali sehingga dibatalkan.

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

C++ ialah bahasa pengaturcaraan berorientasikan objek, dan fleksibiliti serta kuasanya sering memberikan bantuan yang besar kepada pengaturcara. Walau bagaimanapun, dengan tepat kerana fleksibilitinya, sukar untuk mengelakkan pelbagai ralat kecil semasa pengaturcaraan. Salah satu kesilapan yang paling biasa ialah apabila fungsi mengembalikan penunjuk atau rujukan, ia tidak dapat mengembalikan pembolehubah tempatan atau objek sementara. Jadi bagaimana untuk menangani masalah ini? Artikel ini akan memperkenalkan kandungan yang berkaitan secara terperinci. Punca masalah ialah dalam bahasa C++, pembolehubah tempatan dan objek sementara diperuntukkan secara dinamik semasa menjalankan fungsi. Apabila fungsi tamat, pembolehubah tempatan ini dan sementara

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

Golang ialah bahasa pengaturcaraan yang ditaip kuat dengan ciri-ciri kecekapan, kesederhanaan, dan keselarasan, jadi ia secara beransur-ansur digemari oleh semakin ramai pembangun. Dalam pembangunan Golang, pembolehubah global dan pembolehubah tempatan fungsi sering melibatkan isu persaingan data. Artikel ini akan menganalisis masalah persaingan data pembolehubah global dan pembolehubah tempatan dalam fungsi Golang dari perspektif pengekodan sebenar. 1. Persaingan data untuk pembolehubah global Pembolehubah global Golang boleh diakses dalam semua fungsi, jadi jika reka bentuk dan pengekodan yang ketat tidak dijalankan

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 Java10: Cara menggunakan kata kunci var untuk memudahkan kod Pengenalan: Dalam Java10, ciri inferens jenis pembolehubah tempatan diperkenalkan Dengan menggunakan kata kunci var, proses penulisan kod boleh dipermudahkan. Artikel ini akan memperkenalkan penggunaan kata kunci var dan menunjukkan kesannya untuk memudahkan kod melalui kod sampel. 1. Apakah inferens jenis pembolehubah tempatan? Inferens jenis pembolehubah tempatan bermakna apabila mengisytiharkan pembolehubah tempatan, anda boleh menggunakan kata kunci var dan bukannya perisytiharan jenis eksplisit. Penyusun akan menyatakan

Inferens jenis pembolehubah tempatan dalam Java 10: Cara menggunakan kata kunci var dalam gelung foreach Inferens jenis pembolehubah tempatan dalam Java 10: Cara menggunakan kata kunci var dalam gelung foreach Jul 29, 2023 pm 03:21 PM

Inferens jenis pembolehubah tempatan dalam Java10: Cara menggunakan kata kunci var dalam gelung foreach Pengenalan: Java10 ialah versi penting selepas Java9, yang memperkenalkan banyak ciri dan penambahbaikan baharu. Salah satu ciri yang sangat dinanti-nantikan ialah inferens jenis pembolehubah tempatan. Dalam Java10, kita boleh menggunakan kata kunci var untuk mengisytiharkan pembolehubah tempatan dan biarkan pengkompil secara automatik membuat kesimpulan jenis pembolehubah berdasarkan ungkapan di sebelah kanan. Dalam artikel ini, kami akan meneroka cara menggunakannya

Apakah nilai lalai pembolehubah tempatan di Jawa? Apakah nilai lalai pembolehubah tempatan di Jawa? Aug 20, 2023 pm 09:41 PM

Pembolehubah tempatan boleh diisytiharkan dalam kaedah, blok kod, pembina, dll. dalam Java. Pembolehubah setempat dicipta apabila kawalan atur cara memasuki kaedah, blok kod, pembina, dsb., dan dimusnahkan apabila kawalan atur cara meninggalkan kaedah, blok kod, pembina, dsb. Di Java, pembolehubah tempatan tidak mempunyai nilai lalai. Ini bermakna bahawa mereka boleh diisytiharkan dan diberikan sebelum pembolehubah digunakan untuk kali pertama, jika tidak, pengkompil akan membuang ralat. Contoh publicclassLocalVariableTest{ publicvoidprint(){ &am

Inferens jenis pembolehubah tempatan dalam Java 10: Cara menggunakan kata kunci var dalam ungkapan lambda Inferens jenis pembolehubah tempatan dalam Java 10: Cara menggunakan kata kunci var dalam ungkapan lambda Aug 02, 2023 pm 04:25 PM

Inferens jenis pembolehubah tempatan dalam Java10: Cara menggunakan kata kunci var dalam ungkapan lambda Pengenalan: Java10 memperkenalkan ciri baharu inferens jenis pembolehubah tempatan, yang membolehkan kami menggunakan kata kunci var untuk membuat kesimpulan jenis pembolehubah tempatan apabila mengisytiharkannya. Walaupun ciri ini mungkin tidak diperlukan dalam kebanyakan kes, dalam beberapa kes ia boleh meningkatkan kebolehbacaan dan kesederhanaan kod. Artikel ini akan menumpukan pada cara menggunakan kata kunci var dalam ungkapan lambda untuk melaksanakan inferens jenis pembolehubah setempat.

See all articles