javascript中定時器setTimeout的用法一般如下,調用beginrotate之後就進入定時執行rotateloop的一個過程,如下代碼:
var angle = 0;
function rotateloop() {
if (angle angle ;
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 ;
//use angle
//......
setTimeout("rotateloop()", 100);
}
}
//do something
//......
setTimeout("rotateloop()", 100);
}
這樣子改了之後,發現javascript報錯了,rotateloop找不到,顯然setTimeout沒有找到rotateloop這個局部內嵌函數,這裡只要稍微改一下就可以解決這個問題了,程式碼如下:
複製程式碼
程式碼如下:
function beginrotate() {
var angle = 0;
var angle = 0;
function rotatel {
if (angle angle ;
//use angle
//......
setTimeout(rotateloop, 100);
}
}
//do something
//......
setTimeout(rotateloop, 100);
} 只需要將setTimeout的第一個參數改成函數對象,而不是字串,就可以了。