js 定時器setTimeout無法調(diào)用局部變量的解決辦法
更新時間:2013年11月28日 17:31:44 作者:
javascript中定時器setTimeout無法調(diào)用局部變量,只需要將setTimeout的第一個參數(shù)改成函數(shù)對象,而不是字符串,就可以了
javascript中定時器setTimeout的用法一般如下,調(diào)用beginrotate之后就進入定時執(zhí)行rotateloop的一個過程,如下代碼:
var angle = 0;
function rotateloop() {
if (angle < 360) {
angle++;
//use angle
//......
setTimeout("rotateloop()", 100);
}
}
function beginrotate() {
//do something
//......
setTimeout("rotateloop()", 100);
}
這段代碼有一個問題,就是產(chǎn)生了一個全局變量angle,這顯然不是好的編程習慣,所以我們想到使用內(nèi)嵌函數(shù)的方式,將代碼改成如下:
function beginrotate() {
var angle = 0;
function rotateloop() {
if (angle < 360) {
angle++;
//use angle
//......
setTimeout("rotateloop()", 100);
}
}
//do something
//......
setTimeout("rotateloop()", 100);
}
這樣子改了之后,發(fā)現(xiàn)javascript報錯了,rotateloop找不到,顯然setTimeout沒有找到rotateloop這個局部內(nèi)嵌函數(shù),這里只要稍微改一下就可以解決這個問題了,代碼如下:
function beginrotate() {
var angle = 0;
function rotateloop() {
if (angle < 360) {
angle++;
//use angle
//......
setTimeout(rotateloop, 100);
}
}
//do something
//......
setTimeout(rotateloop, 100);
}
只需要將setTimeout的第一個參數(shù)改成函數(shù)對象,而不是字符串,就可以了。
復制代碼 代碼如下:
var angle = 0;
function rotateloop() {
if (angle < 360) {
angle++;
//use angle
//......
setTimeout("rotateloop()", 100);
}
}
function beginrotate() {
//do something
//......
setTimeout("rotateloop()", 100);
}
這段代碼有一個問題,就是產(chǎn)生了一個全局變量angle,這顯然不是好的編程習慣,所以我們想到使用內(nèi)嵌函數(shù)的方式,將代碼改成如下:
復制代碼 代碼如下:
function beginrotate() {
var angle = 0;
function rotateloop() {
if (angle < 360) {
angle++;
//use angle
//......
setTimeout("rotateloop()", 100);
}
}
//do something
//......
setTimeout("rotateloop()", 100);
}
這樣子改了之后,發(fā)現(xiàn)javascript報錯了,rotateloop找不到,顯然setTimeout沒有找到rotateloop這個局部內(nèi)嵌函數(shù),這里只要稍微改一下就可以解決這個問題了,代碼如下:
復制代碼 代碼如下:
function beginrotate() {
var angle = 0;
function rotateloop() {
if (angle < 360) {
angle++;
//use angle
//......
setTimeout(rotateloop, 100);
}
}
//do something
//......
setTimeout(rotateloop, 100);
}
只需要將setTimeout的第一個參數(shù)改成函數(shù)對象,而不是字符串,就可以了。
您可能感興趣的文章:
- js定時器的使用(實例講解)
- JavaScript定時器詳解及實例
- JavaScript暫停和繼續(xù)定時器的實現(xiàn)方法
- javascript中SetInterval與setTimeout的定時器用法
- JavaScript 定時器 SetTimeout之定時刷新窗口和關(guān)閉窗口(代碼超簡單)
- 獲取焦點時,利用js定時器設(shè)定時間執(zhí)行動作
- js定時器實現(xiàn)倒計時效果
- JavaScript定時器和優(yōu)化的取消定時器方法
- Javascript 定時器調(diào)用傳遞參數(shù)的方法
- JavaScript定時器實現(xiàn)的原理分析
- JavaScript定時器常見用法實例分析
相關(guān)文章
JS hasOwnProperty()方法檢測一個屬性是否是對象的自有屬性的方法
這篇文章主要介紹了JS hasOwnProperty()方法檢測一個屬性是否是對象的自有屬性的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-01-01js表單元素checked、radio被選中的幾種方法(詳解)
下面小編就為大家?guī)硪黄猨s表單元素checked、radio被選中的幾種方法(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-08-08