js 定時器setTimeout無法調(diào)用局部變量的解決辦法
更新時間:2013年11月28日 17:31:44 作者:
javascript中定時器setTimeout無法調(diào)用局部變量,只需要將setTimeout的第一個參數(shù)改成函數(shù)對象,而不是字符串,就可以了
javascript中定時器setTimeout的用法一般如下,調(diào)用beginrotate之后就進(jìn)入定時執(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,這顯然不是好的編程習(xí)慣,所以我們想到使用內(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ù)對象,而不是字符串,就可以了。
復(fù)制代碼 代碼如下:
var angle = 0;
function rotateloop() {
if (angle < 360) {
angle++;
//use angle
//......
setTimeout("rotateloop()", 100);
}
}
function beginrotate() {
//do something
//......
setTimeout("rotateloop()", 100);
}
這段代碼有一個問題,就是產(chǎn)生了一個全局變量angle,這顯然不是好的編程習(xí)慣,所以我們想到使用內(nèi)嵌函數(shù)的方式,將代碼改成如下:
復(fù)制代碼 代碼如下:
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ù),這里只要稍微改一下就可以解決這個問題了,代碼如下:
復(fù)制代碼 代碼如下:
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)文章
javascript框架設(shè)計之瀏覽器的嗅探和特征偵測
這篇文章主要介紹了javascript框架設(shè)計之瀏覽器的嗅探和特征偵測的相關(guān)資料,需要的朋友可以參考下2015-06-06
JavaScript高級程序設(shè)計(第三版)學(xué)習(xí)筆記1~5章
這篇文章主要介紹了JavaScript高級程序設(shè)計(第三版)學(xué)習(xí)筆記1~5章 的相關(guān)資料,需要的朋友可以參考下2016-03-03
如何在JavaScript中使用map()迭代數(shù)組詳細(xì)步驟
在JavaScript中循環(huán)迭代數(shù)組的方法有很多種,下面這篇文章主要給大家介紹了關(guān)于如何在JavaScript中使用map()迭代數(shù)組的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-02-02
JavaScript整除運算函數(shù)ceil和floor的區(qū)別分析
這篇文章主要介紹了JavaScript整除運算函數(shù)ceil和floor的區(qū)別分析,實例分析了ceil和floor函數(shù)的使用技巧,非常具有實用價值,需要的朋友可以參考下2015-04-04
JavaScript前端實現(xiàn)判斷登錄設(shè)備是移動端還是PC
這篇文章主要為大家詳細(xì)介紹了JavaScript前端如何實現(xiàn)判斷登錄設(shè)備是移動端還是PC,文中的示例代碼講解詳細(xì),有需要的小伙伴可以參考下2025-03-03
從JavaScript純函數(shù)解析最深刻的函子 Monad實例
這篇文章主要為大家介紹了從JavaScript純函數(shù)解析最深刻的函子 Monad實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10
幾種設(shè)置表單元素中文本輸入框不可編輯的方法總結(jié)
這篇文章主要是對幾種設(shè)置表單元素中文本輸入框不可編輯的方法進(jìn)行了總結(jié)介紹,需要的朋友可以過來參考下,希望對大家有所幫助2013-11-11

