国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

js 定時器setTimeout無法調用局部變量的解決辦法

2019-11-20 21:33:56
字體:
來源:轉載
供稿:網友
javascript中定時器setTimeout的用法一般如下,調用beginrotate之后就進入定時執行rotateloop的一個過程,如下代碼:
復制代碼 代碼如下:

var angle = 0;

function rotateloop() {
if (angle < 360) {
angle++;
//use angle
//......
setTimeout("rotateloop()", 100);
}
}

function beginrotate() {
//do something
//......
setTimeout("rotateloop()", 100);
}

這段代碼有一個問題,就是產生了一個全局變量angle,這顯然不是好的編程習慣,所以我們想到使用內嵌函數的方式,將代碼改成如下:
復制代碼 代碼如下:

function beginrotate() {

var angle = 0;

function rotateloop() {
if (angle < 360) {
angle++;
//use angle
//......
setTimeout("rotateloop()", 100);
}
}
//do something
//......
setTimeout("rotateloop()", 100);
}

這樣子改了之后,發現javascript報錯了,rotateloop找不到,顯然setTimeout沒有找到rotateloop這個局部內嵌函數,這里只要稍微改一下就可以解決這個問題了,代碼如下:
復制代碼 代碼如下:

function beginrotate() {

var angle = 0;

function rotateloop() {
if (angle < 360) {
angle++;
//use angle
//......
setTimeout(rotateloop, 100);
}
}
//do something
//......
setTimeout(rotateloop, 100);
}

只需要將setTimeout的第一個參數改成函數對象,而不是字符串,就可以了。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宽甸| 茂名市| 华坪县| 霸州市| 武汉市| 揭东县| 高雄县| 淮滨县| 翁牛特旗| 瑞金市| 西林县| 蚌埠市| 九江县| 丹东市| 安远县| 渭源县| 濉溪县| 荔浦县| 鄂尔多斯市| 夏津县| 穆棱市| 新民市| 喀什市| 盐津县| 商南县| 瓮安县| 阿克陶县| 涿州市| 江山市| 杭锦后旗| 新绛县| 库伦旗| 司法| 焉耆| 达拉特旗| 高雄县| 文昌市| 阜宁县| 海伦市| 安庆市| 南康市|