国产探花免费观看_亚洲丰满少妇自慰呻吟_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的第一個參數改成函數對象,而不是字符串,就可以了。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 陵水| 辽源市| 灌云县| 通许县| 永城市| 赤峰市| 峨山| 土默特右旗| 寿光市| 葵青区| 东乌珠穆沁旗| 观塘区| 尼玛县| 卓尼县| 高碑店市| 宿迁市| 上栗县| 山丹县| 仙桃市| 磴口县| 都江堰市| 庆元县| 镇安县| 夏津县| 雷山县| 正蓝旗| 平和县| 盈江县| 凯里市| 纳雍县| 大关县| 鹰潭市| 上饶市| 台州市| 通辽市| 桐庐县| 塔河县| 连江县| 美姑县| 海原县| 昭通市|