การใช้งานตัวจับเวลา setTimeout ใน JavaScript โดยทั่วไปจะเป็นดังนี้ หลังจากเรียก beginningrotate แล้ว จะเข้าสู่กระบวนการดำเนินการ Rotateloop เป็นประจำ ดังที่แสดงในโค้ดต่อไปนี้:
คัดลอกรหัสรหัสดังต่อไปนี้:
มุมวาร์ = 0;
ฟังก์ชั่นหมุนวน() {
ถ้า (มุม < 360) {
มุม++;
//ใช้มุม
-
setTimeout("rotateloop()", 100);
-
-
ฟังก์ชั่น startrotate() {
//ทำอะไรสักอย่าง
-
setTimeout("rotateloop()", 100);
-
ปัญหาหนึ่งของโค้ดนี้คือมันสร้างมุมตัวแปรส่วนกลาง ซึ่งเห็นได้ชัดว่าไม่ใช่แนวปฏิบัติในการเขียนโปรแกรมที่ดี ดังนั้นเราจึงคิดที่จะใช้ฟังก์ชันอินไลน์และเปลี่ยนโค้ดดังต่อไปนี้:
คัดลอกรหัสรหัสดังต่อไปนี้:
ฟังก์ชั่น startrotate() {
มุมวาร์ = 0;
ฟังก์ชั่นหมุนวน() {
ถ้า (มุม < 360) {
มุม++;
//ใช้มุม
-
setTimeout("rotateloop()", 100);
-
-
//ทำอะไรสักอย่าง
-
setTimeout("rotateloop()", 100);
-
หลังจากทำการเปลี่ยนแปลงนี้ ฉันพบว่า JavaScript รายงานข้อผิดพลาดและไม่พบ Rotateloop เห็นได้ชัดว่า setTimeout ไม่พบฟังก์ชันที่ฝังอยู่ในเครื่องของ Rotateloop ปัญหานี้สามารถแก้ไขได้ด้วยการเปลี่ยนแปลงเล็กน้อย
คัดลอกรหัสรหัสดังต่อไปนี้:
ฟังก์ชั่น startrotate() {
มุมวาร์ = 0;
ฟังก์ชั่นหมุนวน() {
ถ้า (มุม < 360) {
มุม++;
//ใช้มุม
-
setTimeout (หมุนวน, 100);
-
-
//ทำอะไรสักอย่าง
-
setTimeout (หมุนวน, 100);
-
เพียงเปลี่ยนพารามิเตอร์แรกของ setTimeout เป็นวัตถุฟังก์ชันแทนที่จะเป็นสตริง