Penggunaan timer setTimeout di JavaScript secara umum adalah sebagai berikut. Setelah memanggil Beginrotate, ia memasuki proses eksekusi memutar secara teratur, seperti yang ditunjukkan pada kode berikut:
Copy kode kodenya sebagai berikut:
sudut var = 0;
fungsi memutar loop() {
jika (sudut < 360) {
sudut++;
//gunakan sudut
//......
setTimeout("putarputar()", 100);
}
}
fungsi mulai memutar() {
//melakukan sesuatu
//......
setTimeout("putarputar()", 100);
}
Satu masalah dengan kode ini adalah menghasilkan sudut variabel global, yang jelas bukan praktik pemrograman yang baik, jadi kami berpikir untuk menggunakan fungsi inline dan mengubah kode menjadi berikut:
Copy kode kodenya sebagai berikut:
fungsi mulai memutar() {
sudut var = 0;
fungsi memutar loop() {
jika (sudut < 360) {
sudut++;
//gunakan sudut
//......
setTimeout("putarputar()", 100);
}
}
//melakukan sesuatu
//......
setTimeout("putarputar()", 100);
}
Setelah melakukan perubahan ini, saya menemukan bahwa JavaScript melaporkan kesalahan dan memutar loop tidak dapat ditemukan. Jelas setTimeout tidak menemukan fungsi tertanam lokal dari memutar loop.
Copy kode kodenya sebagai berikut:
fungsi mulai memutar() {
sudut var = 0;
fungsi memutar loop() {
jika (sudut < 360) {
sudut++;
//gunakan sudut
//......
setTimeout(putar putaran, 100);
}
}
//melakukan sesuatu
//......
setTimeout(putar putaran, 100);
}
Ubah saja parameter pertama setTimeout menjadi objek fungsi, bukan string.