首頁 > web前端 > js教程 > 主體

js 定時器setTimeout無法呼叫局部變數的解決方法_javascript技巧

WBOY
發布: 2016-05-16 17:11:56
原創
1332 人瀏覽過

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的第一個參數改成函數對象,而不是字串,就可以了。
相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板