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